import 'package:freezed_annotation/freezed_annotation.dart'; part 'project.freezed.dart'; part 'project.g.dart'; @freezed class ProjectIndex with _$ProjectIndex { const factory ProjectIndex({ required List components, }) = _ProjectIndex; factory ProjectIndex.fromJson(Map json) => _$ProjectIndexFromJson(json); } @freezed class ComponentEntry with _$ComponentEntry { const factory ComponentEntry({ required String componentId, required String componentName, @JsonKey(includeIfNull: false) String? componentDescription, required List inputs, required List outputs, @JsonKey(includeIfNull: false) List? truthTable, @JsonKey(includeIfNull: false) List? logicExpression, @JsonKey(defaultValue: false) required bool visualDesigned, @JsonKey(defaultValue: []) required List dependencies, }) = _ComponentEntry; factory ComponentEntry.fromJson(Map json) => _$ComponentEntryFromJson(json); }