diff --git a/source/CreativeCoders.MacOS.HomeBrew/Models/Formulae/BrewFormulaModel.cs b/source/CreativeCoders.MacOS.HomeBrew/Models/Formulae/BrewFormulaModel.cs
index bb3eea6..1119e5c 100644
--- a/source/CreativeCoders.MacOS.HomeBrew/Models/Formulae/BrewFormulaModel.cs
+++ b/source/CreativeCoders.MacOS.HomeBrew/Models/Formulae/BrewFormulaModel.cs
@@ -97,7 +97,7 @@ public class BrewFormulaModel
/// Gets or sets compile-time options (rarely used).
[JsonPropertyName("options")]
- public string[]? Options { get; set; }
+ public BrewFormulaOptionModel[]? Options { get; set; }
/// Gets or sets build-time dependencies.
[JsonPropertyName("build_dependencies")]
diff --git a/source/CreativeCoders.MacOS.HomeBrew/Models/Formulae/BrewFormulaOptionModel.cs b/source/CreativeCoders.MacOS.HomeBrew/Models/Formulae/BrewFormulaOptionModel.cs
new file mode 100644
index 0000000..f14f014
--- /dev/null
+++ b/source/CreativeCoders.MacOS.HomeBrew/Models/Formulae/BrewFormulaOptionModel.cs
@@ -0,0 +1,19 @@
+using System.Text.Json.Serialization;
+using JetBrains.Annotations;
+
+namespace CreativeCoders.MacOS.HomeBrew.Models.Formulae;
+
+///
+/// Represents a compile-time option for a Homebrew formula.
+///
+[UsedImplicitly]
+public class BrewFormulaOptionModel
+{
+ /// Gets or sets the option flag (e.g. --without-mono).
+ [JsonPropertyName("option")]
+ public string? Option { get; set; }
+
+ /// Gets or sets the human-readable description of the option.
+ [JsonPropertyName("description")]
+ public string? Description { get; set; }
+}
diff --git a/tests/CreativeCoders.MacOS.HomeBrew.Tests/Models/Formulae/BrewFormulaOptionModelTests.cs b/tests/CreativeCoders.MacOS.HomeBrew.Tests/Models/Formulae/BrewFormulaOptionModelTests.cs
new file mode 100644
index 0000000..fcc19aa
--- /dev/null
+++ b/tests/CreativeCoders.MacOS.HomeBrew.Tests/Models/Formulae/BrewFormulaOptionModelTests.cs
@@ -0,0 +1,56 @@
+using System.Text.Json;
+using AwesomeAssertions;
+using CreativeCoders.MacOS.HomeBrew.Models.Formulae;
+
+namespace CreativeCoders.MacOS.HomeBrew.Tests.Models.Formulae;
+
+public class BrewFormulaOptionModelTests
+{
+ [Fact]
+ public void Deserialize_WhenOptionsContainObjects_ReturnsModelsWithProperties()
+ {
+ const string json = """
+ {
+ "options": [
+ {"option": "--without-mono", "description": "Build without mono support"}
+ ]
+ }
+ """;
+
+ var result = JsonSerializer.Deserialize(json);
+
+ result!.Options.Should().HaveCount(1);
+ result.Options![0].Option.Should().Be("--without-mono");
+ result.Options[0].Description.Should().Be("Build without mono support");
+ }
+
+ [Fact]
+ public void Deserialize_WhenOptionsIsEmptyArray_ReturnsEmptyArray()
+ {
+ const string json = """{"options": []}""";
+
+ var result = JsonSerializer.Deserialize(json);
+
+ result!.Options.Should().BeEmpty();
+ }
+
+ [Fact]
+ public void Deserialize_WhenOptionsIsNull_ReturnsNull()
+ {
+ const string json = """{"options": null}""";
+
+ var result = JsonSerializer.Deserialize(json);
+
+ result!.Options.Should().BeNull();
+ }
+
+ [Fact]
+ public void Deserialize_WhenOptionsIsMissing_ReturnsNull()
+ {
+ const string json = """{}""";
+
+ var result = JsonSerializer.Deserialize(json);
+
+ result!.Options.Should().BeNull();
+ }
+}