import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:island/models/account.dart'; import 'package:island/models/developer.dart'; part 'bot.freezed.dart'; part 'bot.g.dart'; @freezed sealed class Bot with _$Bot { const factory Bot({ required String id, required String slug, required bool isActive, required String projectId, required DateTime createdAt, required DateTime updatedAt, required SnAccount account, SnDeveloper? developer, }) = _Bot; factory Bot.fromJson(Map json) => _$BotFromJson(json); } @freezed sealed class BotConfig with _$BotConfig { const factory BotConfig({ @Default(false) bool isPublic, @Default(false) bool isInteractive, @Default([]) List allowedRealms, @Default([]) List allowedChatTypes, @Default({}) Map metadata, }) = _BotConfig; factory BotConfig.fromJson(Map json) => _$BotConfigFromJson(json); } @freezed sealed class BotLinks with _$BotLinks { const factory BotLinks({ String? website, String? documentation, String? privacyPolicy, String? termsOfService, }) = _BotLinks; factory BotLinks.fromJson(Map json) => _$BotLinksFromJson(json); } @freezed sealed class BotSecret with _$BotSecret { const factory BotSecret({ @Default('') String id, @Default('') String secret, String? description, DateTime? expiredAt, @Default('') String botId, }) = _BotSecret; factory BotSecret.fromJson(Map json) => _$BotSecretFromJson(json); }