part of 'metadata.dart'; enum SpotubeMediaCompressionType { lossy, lossless, } @Freezed(unionKey: 'type') class SpotubeAudioSourceContainerPreset with _$SpotubeAudioSourceContainerPreset { @FreezedUnionValue("lossy") factory SpotubeAudioSourceContainerPreset.lossy({ required SpotubeMediaCompressionType type, required String name, required List qualities, }) = SpotubeAudioSourceContainerPresetLossy; @FreezedUnionValue("lossless") factory SpotubeAudioSourceContainerPreset.lossless({ required SpotubeMediaCompressionType type, required String name, required List qualities, }) = SpotubeAudioSourceContainerPresetLossless; factory SpotubeAudioSourceContainerPreset.fromJson( Map json) => _$SpotubeAudioSourceContainerPresetFromJson(json); } @freezed class SpotubeAudioLossyContainerQuality with _$SpotubeAudioLossyContainerQuality { factory SpotubeAudioLossyContainerQuality({ required double bitrate, }) = _SpotubeAudioLossyContainerQuality; factory SpotubeAudioLossyContainerQuality.fromJson( Map json) => _$SpotubeAudioLossyContainerQualityFromJson(json); } @freezed class SpotubeAudioLosslessContainerQuality with _$SpotubeAudioLosslessContainerQuality { factory SpotubeAudioLosslessContainerQuality({ required int bitDepth, required double sampleRate, }) = _SpotubeAudioLosslessContainerQuality; factory SpotubeAudioLosslessContainerQuality.fromJson( Map json) => _$SpotubeAudioLosslessContainerQualityFromJson(json); } @freezed class SpotubeAudioSourceMatchObject with _$SpotubeAudioSourceMatchObject { factory SpotubeAudioSourceMatchObject({ required String id, required String title, required List artists, required Duration duration, String? thumbnail, required String externalUri, }) = _SpotubeAudioSourceMatchObject; factory SpotubeAudioSourceMatchObject.fromJson(Map json) => _$SpotubeAudioSourceMatchObjectFromJson(json); } @freezed class SpotubeAudioSourceStreamObject with _$SpotubeAudioSourceStreamObject { factory SpotubeAudioSourceStreamObject({ required String url, required String container, required SpotubeMediaCompressionType type, String? codec, double? bitrate, int? bitDepth, double? sampleRate, }) = _SpotubeAudioSourceStreamObject; factory SpotubeAudioSourceStreamObject.fromJson(Map json) => _$SpotubeAudioSourceStreamObjectFromJson(json); }