stable class ly.david.musicsearch.shared.domain.auth.MusicBrainzLoginActivityResultContract.Result.Success {
  stable val requestJsonString: String
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.auth.MusicBrainzLoginActivityResultContract.Result.Error {
  stable val exceptionString: String
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.auth.MusicBrainzLoginActivityResultContract.Result {
  <runtime stability> = Stable
}
unstable class ly.david.musicsearch.shared.domain.auth.MusicBrainzLoginActivityResultContract {
  <runtime stability> = Unstable
}
runtime class ly.david.musicsearch.shared.domain.BrowseMethod.All {
  runtime var CREATOR: Creator<All>
  <runtime stability> = Uncertain(Creator)
}
runtime class ly.david.musicsearch.shared.domain.BrowseMethod.ByEntity {
  stable val entityId: String
  stable val entityType: MusicBrainzEntityType
  runtime var CREATOR: Creator<ByEntity>
  <runtime stability> = Uncertain(Creator)
}
stable class ly.david.musicsearch.shared.domain.BrowseMethod {
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.LifeSpanUiModel {
  stable val begin: String
  stable val end: String
  stable val ended: Boolean
  <runtime stability> = Stable
}
runtime class ly.david.musicsearch.shared.domain.ListFilters {
  stable val query: String
  stable val isRemote: Boolean
  stable val username: String
  runtime val sortOption: SortOption
  <runtime stability> = Uncertain(SortOption)
}
stable class ly.david.musicsearch.shared.domain.alias.BasicAlias {
  stable val name: String
  stable val locale: String
  stable val isPrimary: Boolean
  stable val type: AliasType?
  stable val begin: String
  stable val end: String
  stable val ended: Boolean
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.area.AreaType {
  stable val COUNTRY: String
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.area.ReleaseEvent {
  stable val id: String
  stable val name: String
  stable val date: String?
  stable val countryCode: String?
  stable val visited: Boolean
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.artist.ArtistCreditUiModel {
  stable val artistId: String
  stable val name: String
  stable val joinPhrase: String?
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.artist.CollaboratingArtistAndEntity {
  stable val artistId: String
  stable val artistName: String
  stable val entityId: String
  stable val entityName: String
  stable val entity: MusicBrainzEntityType
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.browse.BrowseRemoteMetadata {
  stable val remoteCount: Int
  stable val lastUpdated: Instant
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.collection.CreateNewCollectionResult.NewCollection {
  stable val id: String?
  stable val name: String
  stable val entity: MusicBrainzEntityType
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.collection.CreateNewCollectionResult.Dismissed {
  <runtime stability> = Stable
}
runtime class ly.david.musicsearch.shared.domain.collection.usecase.CreateCollection {
  runtime val collectionRepository: CollectionRepository
  <runtime stability> = Uncertain(CollectionRepository)
}
unstable class ly.david.musicsearch.shared.domain.collection.usecase.GetAllCollections {
  runtime val collectionRepository: CollectionRepository
  runtime val musicBrainzAuthStore: MusicBrainzAuthStore
  unstable val coroutineScope: CoroutineScope
  <runtime stability> = Unstable
}
stable class ly.david.musicsearch.shared.domain.collection.usecase.GetCollection {
  runtime val collectionRepository: CollectionRepository
  runtime val detailsMetadataDao: DetailsMetadataDao
  <runtime stability> = 
}
unstable class ly.david.musicsearch.shared.domain.coroutine.CoroutineDispatchers {
  unstable val default: CoroutineContext
  unstable val io: CoroutineContext
  <runtime stability> = Unstable
}
stable class ly.david.musicsearch.shared.domain.details.AreaDetailsModel {
  stable val id: String
  stable val name: String
  stable val sortName: String
  stable val disambiguation: String
  stable val type: String
  stable val lifeSpan: LifeSpanUiModel
  stable val countryCode: String
  stable val lastUpdated: Instant
  stable val artistCredits: ImmutableList<ArtistCreditUiModel>
  stable val imageMetadata: ImageMetadata
  stable val wikipediaExtract: WikipediaExtract
  stable val urls: ImmutableList<RelationListItemModel>
  stable val aliases: ImmutableList<BasicAlias>
  <runtime stability> = 
}
stable class ly.david.musicsearch.shared.domain.details.ArtistDetailsModel {
  stable val id: String
  stable val name: String
  stable val sortName: String
  stable val disambiguation: String
  stable val type: String
  stable val gender: String
  stable val ipis: ImmutableList<String>
  stable val isnis: ImmutableList<String>
  stable val lifeSpan: LifeSpanUiModel
  stable val areaListItemModel: AreaListItemModel?
  stable val lastUpdated: Instant
  stable val artistCredits: ImmutableList<ArtistCreditUiModel>
  stable val imageMetadata: ImageMetadata
  stable val urls: ImmutableList<RelationListItemModel>
  stable val wikipediaExtract: WikipediaExtract
  stable val aliases: ImmutableList<BasicAlias>
  stable val listenCount: Long?
  stable val latestListens: ImmutableList<ListenWithRecording>
  stable val listenBrainzUrl: String
  <runtime stability> = 
}
stable class ly.david.musicsearch.shared.domain.details.EventDetailsModel {
  stable val id: String
  stable val name: String
  stable val disambiguation: String
  stable val type: String
  stable val time: String
  stable val cancelled: Boolean
  stable val lifeSpan: LifeSpanUiModel
  stable val lastUpdated: Instant
  stable val artistCredits: ImmutableList<ArtistCreditUiModel>
  stable val imageMetadata: ImageMetadata
  stable val wikipediaExtract: WikipediaExtract
  stable val urls: ImmutableList<RelationListItemModel>
  stable val aliases: ImmutableList<BasicAlias>
  <runtime stability> = 
}
stable class ly.david.musicsearch.shared.domain.details.InstrumentDetailsModel {
  stable val id: String
  stable val name: String
  stable val disambiguation: String
  stable val description: String
  stable val type: String
  stable val lastUpdated: Instant
  stable val artistCredits: ImmutableList<ArtistCreditUiModel>
  stable val imageMetadata: ImageMetadata
  stable val wikipediaExtract: WikipediaExtract
  stable val urls: ImmutableList<RelationListItemModel>
  stable val aliases: ImmutableList<BasicAlias>
  <runtime stability> = 
}
stable class ly.david.musicsearch.shared.domain.details.LabelDetailsModel {
  stable val id: String
  stable val name: String
  stable val disambiguation: String
  stable val type: String
  stable val labelCode: Int?
  stable val ipis: ImmutableList<String>
  stable val isnis: ImmutableList<String>
  stable val lifeSpan: LifeSpanUiModel
  stable val area: AreaListItemModel?
  stable val lastUpdated: Instant
  stable val artistCredits: ImmutableList<ArtistCreditUiModel>
  stable val imageMetadata: ImageMetadata
  stable val wikipediaExtract: WikipediaExtract
  stable val urls: ImmutableList<RelationListItemModel>
  stable val aliases: ImmutableList<BasicAlias>
  <runtime stability> = 
}
stable class ly.david.musicsearch.shared.domain.details.PlaceDetailsModel {
  stable val id: String
  stable val name: String
  stable val disambiguation: String
  stable val address: String
  stable val type: String
  stable val coordinates: CoordinatesUiModel
  stable val lifeSpan: LifeSpanUiModel
  stable val area: AreaListItemModel?
  stable val lastUpdated: Instant
  stable val artistCredits: ImmutableList<ArtistCreditUiModel>
  stable val imageMetadata: ImageMetadata
  stable val wikipediaExtract: WikipediaExtract
  stable val urls: ImmutableList<RelationListItemModel>
  stable val aliases: ImmutableList<BasicAlias>
  <runtime stability> = 
}
stable class ly.david.musicsearch.shared.domain.details.RecordingDetailsModel {
  stable val id: String
  stable val name: String
  stable val firstReleaseDate: String
  stable val disambiguation: String
  stable val length: Int?
  stable val video: Boolean
  stable val isrcs: ImmutableList<String>
  stable val lastUpdated: Instant
  stable val artistCredits: ImmutableList<ArtistCreditUiModel>
  stable val imageMetadata: ImageMetadata
  stable val wikipediaExtract: WikipediaExtract
  stable val urls: ImmutableList<RelationListItemModel>
  stable val aliases: ImmutableList<BasicAlias>
  stable val listenCount: Long?
  stable val latestListensTimestampsMs: ImmutableList<Long>
  stable val listenBrainzUrl: String
  <runtime stability> = 
}
unstable class ly.david.musicsearch.shared.domain.details.ReleaseDetailsModel {
  stable val id: String
  stable val name: String
  stable val disambiguation: String
  stable val date: String
  stable val barcode: String
  stable val status: ReleaseStatus?
  stable val countryCode: String
  stable val packaging: String
  stable val packagingId: String
  stable val asin: String
  stable val quality: String
  stable val lastUpdated: Instant
  stable val imageMetadata: ImageMetadata
  stable val artistCredits: ImmutableList<ArtistCreditUiModel>
  stable val wikipediaExtract: WikipediaExtract
  stable val urls: ImmutableList<RelationListItemModel>
  stable val aliases: ImmutableList<BasicAlias>
  stable val textRepresentation: TextRepresentationUiModel
  stable val formattedFormats: String
  stable val formattedTracks: String
  unstable val releaseGroup: ReleaseGroupForRelease?
  unstable val areas: List<AreaListItemModel>
  unstable val labels: List<LabelListItemModel>
  stable val releaseLength: Int?
  stable val hasNullLength: Boolean
  stable val listenCount: Long?
  stable val latestListens: ImmutableList<ListenWithTrack>
  stable val listenBrainzUrl: String
  stable val mostListenedTrackCount: Long
  stable val completeListenCount: Long
  <runtime stability> = Unstable
}
stable class ly.david.musicsearch.shared.domain.details.ReleaseGroupDetailsModel {
  stable val id: String
  stable val name: String
  stable val disambiguation: String
  stable val firstReleaseDate: String
  stable val primaryType: String
  stable val secondaryTypes: ImmutableList<String>
  stable val lastUpdated: Instant
  stable val artistCredits: ImmutableList<ArtistCreditUiModel>
  stable val imageMetadata: ImageMetadata
  stable val wikipediaExtract: WikipediaExtract
  stable val urls: ImmutableList<RelationListItemModel>
  stable val aliases: ImmutableList<BasicAlias>
  <runtime stability> = 
}
stable class ly.david.musicsearch.shared.domain.details.SeriesDetailsModel {
  stable val id: String
  stable val name: String
  stable val disambiguation: String
  stable val type: String
  stable val lastUpdated: Instant
  stable val artistCredits: ImmutableList<ArtistCreditUiModel>
  stable val imageMetadata: ImageMetadata
  stable val wikipediaExtract: WikipediaExtract
  stable val urls: ImmutableList<RelationListItemModel>
  stable val aliases: ImmutableList<BasicAlias>
  <runtime stability> = 
}
stable class ly.david.musicsearch.shared.domain.details.WorkDetailsModel {
  stable val id: String
  stable val name: String
  stable val disambiguation: String
  stable val type: String
  stable val languages: ImmutableList<String>
  stable val iswcs: ImmutableList<String>
  stable val lastUpdated: Instant
  stable val attributes: ImmutableList<WorkAttributeUiModel>
  stable val artistCredits: ImmutableList<ArtistCreditUiModel>
  stable val imageMetadata: ImageMetadata
  stable val wikipediaExtract: WikipediaExtract
  stable val urls: ImmutableList<RelationListItemModel>
  stable val aliases: ImmutableList<BasicAlias>
  <runtime stability> = 
}
stable class ly.david.musicsearch.shared.domain.error.Feedback.Loading {
  stable val message: String
  stable val time: Instant
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.error.Feedback.Success {
  stable val message: String
  stable val time: Instant
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.error.Feedback.Error {
  stable val message: String
  stable val errorResolution: ErrorResolution
  stable val action: Action?
  stable val time: Instant
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.error.Feedback.Actionable {
  stable val message: String
  stable val action: Action
  stable val time: Instant
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.error.ActionableResult {
  stable val message: String
  stable val errorResolution: ErrorResolution
  stable val action: Action?
  stable val time: Instant
  <runtime stability> = Stable
}
unstable class ly.david.musicsearch.shared.domain.error.HandledException {
  stable val userMessage: String
  stable val errorType: ErrorType?
  stable val errorResolution: ErrorResolution
  <runtime stability> = Unstable
}
stable class ly.david.musicsearch.shared.domain.history.LookupHistory {
  stable val mbid: String
  stable val title: String
  stable val entity: MusicBrainzEntityType
  stable val numberOfVisits: Int
  stable val lastAccessed: Instant
  stable val searchHint: String
  stable val deleted: Boolean
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.history.NowPlayingHistory {
  stable val raw: String
  stable val lastPlayed: Instant
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.history.SearchHistory {
  stable val query: String
  stable val entity: MusicBrainzEntityType
  stable val lastAccessed: Instant
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.history.SpotifyHistory {
  stable val trackId: String
  stable val artistName: String?
  stable val albumName: String?
  stable val trackName: String?
  stable val trackLengthMilliseconds: Int?
  stable val lastListened: Instant
  <runtime stability> = Stable
}
runtime class ly.david.musicsearch.shared.domain.history.usecase.DeleteLookupHistoryImpl {
  runtime val lookupHistoryRepository: LookupHistoryRepository
  <runtime stability> = Uncertain(LookupHistoryRepository)
}
unstable class ly.david.musicsearch.shared.domain.history.usecase.GetPagedHistoryImpl {
  runtime val lookupHistoryRepository: LookupHistoryRepository
  unstable val coroutineScope: CoroutineScope
  <runtime stability> = Unstable
}
runtime class ly.david.musicsearch.shared.domain.history.usecase.IncrementLookupHistoryImpl {
  runtime val lookupHistoryRepository: LookupHistoryRepository
  <runtime stability> = Uncertain(LookupHistoryRepository)
}
runtime class ly.david.musicsearch.shared.domain.history.usecase.MarkLookupHistoryForDeletionImpl {
  runtime val lookupHistoryRepository: LookupHistoryRepository
  <runtime stability> = Uncertain(LookupHistoryRepository)
}
runtime class ly.david.musicsearch.shared.domain.history.usecase.UnMarkLookupHistoryForDeletionImpl {
  runtime val lookupHistoryRepository: LookupHistoryRepository
  <runtime stability> = Uncertain(LookupHistoryRepository)
}
stable class ly.david.musicsearch.shared.domain.image.ImageMetadata {
  stable val imageId: ImageId
  stable val thumbnailUrl: String
  stable val largeUrl: String
  stable val types: ImmutableList<String>
  stable val comment: String
  stable val mbid: String?
  stable val name: String?
  stable val disambiguation: String?
  stable val entity: MusicBrainzEntityType?
  <runtime stability> = 
}
stable class ly.david.musicsearch.shared.domain.image.ImageMetadataRepositoryImpl {
  runtime val artistImageRepository: ArtistImageRepository
  runtime val musicBrainzImageMetadataRepository: MusicBrainzImageMetadataRepository
  <runtime stability> = 
}
stable class ly.david.musicsearch.shared.domain.image.ImageMetadataWithCount {
  stable val imageMetadata: ImageMetadata
  stable val count: Int
  <runtime stability> = 
}
stable class ly.david.musicsearch.shared.domain.list.FacetListItem {
  stable val id: String
  stable val name: String
  stable val disambiguation: String
  stable val aliases: ImmutableList<BasicAlias>
  stable val formattedArtistCredits: String
  stable val count: Int
  <runtime stability> = 
}
unstable class ly.david.musicsearch.shared.domain.list.GetEntitiesImpl {
  runtime val entitiesListRepository: EntitiesListRepository
  runtime val browseRemoteMetadataRepository: BrowseRemoteMetadataRepository
  unstable val coroutineScope: CoroutineScope
  <runtime stability> = Unstable
}
stable class ly.david.musicsearch.shared.domain.list.SortOption.None {
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.list.SortOption.Recording {
  stable val option: RecordingSortOption
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.list.SortOption.Release {
  stable val option: ReleaseSortOption
  stable val showMoreInfo: Boolean
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.list.SortOption.ReleaseGroup {
  stable val option: ReleaseGroupSortOption
  <runtime stability> = Stable
}
unstable class ly.david.musicsearch.shared.domain.listen.Listen.EntityMapping {
  stable val recordingMusicbrainzId: String?
  stable val recordingName: String?
  stable val durationMs: Long?
  stable val caaId: Long?
  stable val caaReleaseMbid: String?
  stable val releaseMbid: String?
  stable val releaseName: String?
  unstable val artistCredits: List<ArtistCreditUiModel>
  <runtime stability> = Unstable
}
unstable class ly.david.musicsearch.shared.domain.listen.Listen {
  stable val insertedAtMs: Long
  stable val listenedAtMs: Long
  stable val recordingMessybrainzId: String
  stable val username: String
  stable val artistName: String
  stable val trackName: String
  stable val mediaPlayer: String?
  stable val submissionClient: String?
  stable val musicService: String?
  stable val musicServiceName: String?
  stable val originUrl: String?
  unstable val spotifyAlbumArtistIds: List<String>?
  stable val spotifyAlbumId: String?
  unstable val spotifyArtistIds: List<String>?
  stable val spotifyId: String?
  unstable val entityMapping: EntityMapping
  <runtime stability> = Unstable
}
stable class ly.david.musicsearch.shared.domain.listen.ListenListItemModel {
  stable val listenedAtMs: Long
  stable val username: String
  stable val recordingMessybrainzId: String
  stable val name: String
  stable val disambiguation: String
  stable val formattedArtistCredits: String
  stable val recordingId: String
  stable val durationMs: Int?
  stable val imageUrl: String?
  stable val imageId: ImageId?
  stable val visited: Boolean
  stable val release: ListenRelease
  stable val aliases: ImmutableList<BasicAlias>
  stable val id: String
  stable val listenedAt: Instant
  <runtime stability> = 
}
stable class ly.david.musicsearch.shared.domain.listen.ListenRelease {
  stable val name: String?
  stable val id: String?
  stable val visited: Boolean
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.listen.ListenWithRecording {
  stable val id: String
  stable val name: String
  stable val disambiguation: String
  stable val listenedMs: Long
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.listen.ListenWithTrack {
  stable val mediumPosition: Int
  stable val trackNumber: String
  stable val trackName: String
  stable val listenedMs: Long
  <runtime stability> = Stable
}
runtime class ly.david.musicsearch.shared.domain.listen.ListenBrainzLoginState.InvalidToken {
  runtime var CREATOR: Creator<InvalidToken>
  <runtime stability> = Uncertain(Creator)
}
runtime class ly.david.musicsearch.shared.domain.listen.ListenBrainzLoginState.LoggedIn {
  runtime var CREATOR: Creator<LoggedIn>
  <runtime stability> = Uncertain(Creator)
}
runtime class ly.david.musicsearch.shared.domain.listen.ListenBrainzLoginState.LoggedOut {
  runtime var CREATOR: Creator<LoggedOut>
  <runtime stability> = Uncertain(Creator)
}
runtime class ly.david.musicsearch.shared.domain.listen.ListenBrainzLoginState.OtherError {
  stable val message: String
  runtime var CREATOR: Creator<OtherError>
  <runtime stability> = Uncertain(Creator)
}
stable class ly.david.musicsearch.shared.domain.listen.ListenBrainzLoginState {
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.listitem.AreaListItemModel {
  stable val id: String
  stable val name: String
  stable val sortName: String
  stable val disambiguation: String
  stable val type: String
  stable val lifeSpan: LifeSpanUiModel
  stable val countryCodes: ImmutableList<String>
  stable val date: String?
  stable val visited: Boolean
  stable val collected: Boolean
  stable val aliases: ImmutableList<BasicAlias>
  <runtime stability> = 
}
stable class ly.david.musicsearch.shared.domain.listitem.ArtistListItemModel {
  stable val id: String
  stable val name: String
  stable val sortName: String
  stable val disambiguation: String
  stable val type: String
  stable val gender: String
  stable val countryCode: String
  stable val lifeSpan: LifeSpanUiModel
  stable val imageUrl: String?
  stable val imageId: ImageId?
  stable val visited: Boolean
  stable val collected: Boolean
  stable val aliases: ImmutableList<BasicAlias>
  <runtime stability> = 
}
stable class ly.david.musicsearch.shared.domain.listitem.CollectionListItemModel {
  stable val id: String
  stable val isRemote: Boolean
  stable val name: String
  stable val description: String
  stable val entity: MusicBrainzEntityType
  stable val cachedEntityCount: Int
  stable val visited: Boolean
  stable val containsEntity: Boolean
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.listitem.EventListItemModel {
  stable val id: String
  stable val name: String
  stable val disambiguation: String
  stable val type: String
  stable val time: String
  stable val cancelled: Boolean
  stable val lifeSpan: LifeSpanUiModel
  stable val imageUrl: String?
  stable val imageId: ImageId?
  stable val visited: Boolean
  stable val collected: Boolean
  stable val aliases: ImmutableList<BasicAlias>
  <runtime stability> = 
}
stable class ly.david.musicsearch.shared.domain.listitem.Footer {
  stable val id: String
  stable val text: String
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.listitem.GenreListItemModel {
  stable val id: String
  stable val name: String
  stable val disambiguation: String
  stable val visited: Boolean
  stable val collected: Boolean
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.listitem.Header {
  stable val id: String
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.listitem.InstrumentListItemModel {
  stable val id: String
  stable val name: String
  stable val disambiguation: String
  stable val description: String
  stable val type: String
  stable val visited: Boolean
  stable val collected: Boolean
  stable val aliases: ImmutableList<BasicAlias>
  <runtime stability> = 
}
stable class ly.david.musicsearch.shared.domain.listitem.LabelListItemModel {
  stable val id: String
  stable val name: String
  stable val disambiguation: String
  stable val type: String
  stable val labelCode: Int?
  stable val catalogNumbers: String?
  stable val visited: Boolean
  stable val collected: Boolean
  stable val aliases: ImmutableList<BasicAlias>
  <runtime stability> = 
}
stable class ly.david.musicsearch.shared.domain.listitem.LastUpdatedFooter {
  stable val id: String
  stable val lastUpdated: Instant
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.listitem.ListSeparator {
  stable val id: String
  stable val text: String
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.listitem.LookupHistoryListItemModel {
  stable val id: String
  stable val title: String
  stable val entity: MusicBrainzEntityType
  stable val numberOfVisits: Int
  stable val lastAccessed: Instant
  stable val imageUrl: String?
  stable val imageId: ImageId?
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.listitem.NowPlayingHistoryListItemModel {
  stable val id: String
  stable val title: String
  stable val artist: String
  stable val lastPlayed: Instant
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.listitem.PlaceListItemModel {
  stable val id: String
  stable val name: String
  stable val disambiguation: String
  stable val address: String
  stable val type: String
  stable val coordinates: CoordinatesUiModel?
  stable val lifeSpan: LifeSpanUiModel
  stable val visited: Boolean
  stable val collected: Boolean
  stable val aliases: ImmutableList<BasicAlias>
  <runtime stability> = 
}
stable class ly.david.musicsearch.shared.domain.listitem.RecordingListItemModel {
  stable val id: String
  stable val name: String
  stable val firstReleaseDate: String
  stable val disambiguation: String
  stable val length: Int?
  stable val video: Boolean
  stable val formattedArtistCredits: String?
  stable val visited: Boolean
  stable val collected: Boolean
  stable val aliases: ImmutableList<BasicAlias>
  stable val listenCount: Long?
  <runtime stability> = 
}
stable class ly.david.musicsearch.shared.domain.listitem.RelationListItemModel {
  stable val id: String
  stable val linkedEntityId: String
  stable val type: String
  stable val name: String
  stable val disambiguation: String?
  stable val attributes: String?
  stable val linkedEntity: MusicBrainzEntityType
  stable val visited: Boolean
  stable val isForwardDirection: Boolean?
  stable val aliases: ImmutableList<BasicAlias>
  stable val lifeSpan: LifeSpanUiModel
  stable val imageUrl: String?
  stable val imageId: ImageId?
  stable val lastUpdated: Instant?
  <runtime stability> = 
}
stable class ly.david.musicsearch.shared.domain.listitem.ReleaseGroupListItemModel {
  stable val id: String
  stable val name: String
  stable val disambiguation: String
  stable val firstReleaseDate: String
  stable val primaryType: String
  stable val secondaryTypes: ImmutableList<String>
  stable val formattedArtistCredits: String?
  stable val imageUrl: String?
  stable val imageId: ImageId?
  stable val visited: Boolean
  stable val collected: Boolean
  stable val aliases: ImmutableList<BasicAlias>
  <runtime stability> = 
}
stable class ly.david.musicsearch.shared.domain.listitem.ReleaseListItemModel.ListenState.Hide {
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.listitem.ReleaseListItemModel.ListenState.Unknown {
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.listitem.ReleaseListItemModel.ListenState.Known {
  stable val listenCount: Long
  stable val completeListenCount: Long
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.listitem.ReleaseListItemModel {
  stable val id: String
  stable val name: String
  stable val disambiguation: String
  stable val date: String
  stable val barcode: String
  stable val status: ReleaseStatus?
  stable val countryCode: String
  stable val packaging: String
  stable val packagingId: String
  stable val asin: String
  stable val quality: String
  stable val catalogNumbers: String?
  stable val textRepresentation: TextRepresentationUiModel?
  stable val imageUrl: String?
  stable val imageId: ImageId?
  stable val formattedFormats: String?
  stable val formattedTracks: String?
  stable val formattedArtistCredits: String?
  stable val releaseCountryCount: Int
  stable val visited: Boolean
  stable val collected: Boolean
  stable val aliases: ImmutableList<BasicAlias>
  runtime val listenState: ListenState
  <runtime stability> = 
}
stable class ly.david.musicsearch.shared.domain.listitem.SearchHeader {
  stable val id: String
  stable val remoteCount: Int
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.listitem.SearchHistoryListItemModel {
  stable val id: String
  stable val query: String
  stable val entityType: MusicBrainzEntityType
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.listitem.SeriesListItemModel {
  stable val id: String
  stable val name: String
  stable val disambiguation: String?
  stable val type: String
  stable val visited: Boolean
  stable val collected: Boolean
  stable val aliases: ImmutableList<BasicAlias>
  <runtime stability> = 
}
stable class ly.david.musicsearch.shared.domain.listitem.SpotifyHistoryListItemModel {
  stable val id: String
  stable val trackId: String
  stable val artistName: String?
  stable val albumName: String?
  stable val trackName: String?
  stable val trackLengthMilliseconds: Int?
  stable val lastListened: Instant
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.listitem.TrackListItemModel {
  stable val id: String
  stable val position: Int
  stable val number: String
  stable val name: String
  stable val length: Int?
  stable val mediumId: Long
  stable val recordingId: String
  stable val formattedArtistCredits: String?
  stable val visited: Boolean
  stable val mediumPosition: Int
  stable val mediumName: String?
  stable val trackCount: Int
  stable val format: String?
  stable val aliases: ImmutableList<BasicAlias>
  stable val listenCount: Long?
  stable val disambiguation: String?
  <runtime stability> = 
}
stable class ly.david.musicsearch.shared.domain.listitem.WorkListItemModel {
  stable val id: String
  stable val name: String
  stable val disambiguation: String
  stable val type: String
  stable val languages: ImmutableList<String>
  stable val iswcs: ImmutableList<String>
  stable val attributes: ImmutableList<WorkAttributeUiModel>
  stable val visited: Boolean
  stable val collected: Boolean
  stable val aliases: ImmutableList<BasicAlias>
  <runtime stability> = 
}
runtime class ly.david.musicsearch.shared.domain.musicbrainz.MusicBrainzEntity {
  stable val id: String
  stable val type: MusicBrainzEntityType
  runtime var CREATOR: Creator<MusicBrainzEntity>
  <runtime stability> = Uncertain(Creator)
}
runtime class ly.david.musicsearch.shared.domain.musicbrainz.usecase.GetMusicBrainzCoverArtUrl {
  runtime val getMusicBrainzUrl: GetMusicBrainzUrl
  <runtime stability> = Uncertain(GetMusicBrainzUrl)
}
runtime class ly.david.musicsearch.shared.domain.musicbrainz.usecase.GetMusicBrainzUrlImpl {
  runtime val musicbrainzRepository: MusicbrainzRepository
  <runtime stability> = Uncertain(MusicbrainzRepository)
}
runtime class ly.david.musicsearch.shared.domain.nowplaying.usecase.DeleteNowPlayingHistory {
  runtime val nowPlayingHistoryRepository: NowPlayingHistoryRepository
  <runtime stability> = Uncertain(NowPlayingHistoryRepository)
}
unstable class ly.david.musicsearch.shared.domain.nowplaying.usecase.GetNowPlayingHistory {
  runtime val nowPlayingHistoryRepository: NowPlayingHistoryRepository
  unstable val coroutineScope: CoroutineScope
  <runtime stability> = Unstable
}
unstable class ly.david.musicsearch.shared.domain.paging.CommonPagingConfig {
  stable val PAGING_PAGE_SIZE: Int
  stable val PREFETCH_DISTANCE: Int
  unstable val pagingConfig: PagingConfig
  <runtime stability> = Unstable
}
stable class ly.david.musicsearch.shared.domain.place.CoordinatesUiModel {
  stable val longitude: Double?
  stable val latitude: Double?
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.relation.RelationStats {
  stable val relationTypeCounts: ImmutableList<RelationTypeCount>
  stable val lastUpdated: Instant?
  <runtime stability> = 
}
stable class ly.david.musicsearch.shared.domain.relation.RelationTypeCount {
  stable val linkedEntity: MusicBrainzEntityType
  stable val count: Int
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.relation.RelationWithOrder {
  stable val id: String
  stable val linkedEntityId: String
  stable val type: String
  stable val typeId: String
  stable val name: String
  stable val disambiguation: String?
  stable val attributes: String?
  stable val attributeIds: String
  stable val linkedEntity: MusicBrainzEntityType
  stable val isForwardDirection: Boolean?
  stable val order: Int
  stable val lifeSpan: LifeSpanUiModel
  <runtime stability> = Stable
}
unstable class ly.david.musicsearch.shared.domain.relation.usecase.GetEntityRelationshipsImpl {
  runtime val relationRepository: RelationRepository
  unstable val coroutineScope: CoroutineScope
  <runtime stability> = Unstable
}
runtime class ly.david.musicsearch.shared.domain.relation.usecase.ObserveRelationStatsUseCaseImpl {
  runtime val relationRepository: RelationRepository
  <runtime stability> = Uncertain(RelationRepository)
}
stable class ly.david.musicsearch.shared.domain.release.FormatTrackCount {
  stable val format: String?
  stable val trackCount: Int
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.release.TextRepresentationUiModel {
  stable val script: String
  stable val language: String
  <runtime stability> = Stable
}
unstable class ly.david.musicsearch.shared.domain.release.usecase.GetTracksByReleaseImpl {
  runtime val releaseRepository: ReleaseRepository
  unstable val coroutineScope: CoroutineScope
  <runtime stability> = Unstable
}
unstable class ly.david.musicsearch.shared.domain.releasegroup.ReleaseGroupForRelease {
  stable val id: String
  stable val name: String
  stable val disambiguation: String
  stable val firstReleaseDate: String
  stable val primaryType: String
  unstable val secondaryTypes: List<String>
  <runtime stability> = Unstable
}
unstable class ly.david.musicsearch.shared.domain.releasegroup.ReleaseGroupTypeCount {
  stable val primaryType: String?
  unstable val secondaryTypes: List<String>?
  stable val count: Int
  <runtime stability> = Unstable
}
runtime class ly.david.musicsearch.shared.domain.search.history.usecase.DeleteSearchHistory {
  runtime val searchHistoryRepository: SearchHistoryRepository
  <runtime stability> = Uncertain(SearchHistoryRepository)
}
unstable class ly.david.musicsearch.shared.domain.search.history.usecase.GetSearchHistory {
  runtime val searchHistoryRepository: SearchHistoryRepository
  unstable val coroutineScope: CoroutineScope
  <runtime stability> = Unstable
}
runtime class ly.david.musicsearch.shared.domain.search.history.usecase.RecordSearchHistory {
  runtime val searchHistoryRepository: SearchHistoryRepository
  <runtime stability> = Uncertain(SearchHistoryRepository)
}
stable class ly.david.musicsearch.shared.domain.search.results.SearchResultMetadata {
  stable val entity: MusicBrainzEntityType
  stable val query: String
  stable val localCount: Int
  stable val remoteCount: Int
  <runtime stability> = Stable
}
unstable class ly.david.musicsearch.shared.domain.search.results.usecase.GetSearchResults {
  runtime val searchResultsRepository: SearchResultsRepository
  unstable val coroutineScope: CoroutineScope
  unstable val _searchQueries: MutableStateFlow<Pair<MusicBrainzEntityType, String>>
  <runtime stability> = Unstable
}
stable class ly.david.musicsearch.shared.domain.wikimedia.WikipediaExtract {
  stable val extract: String
  stable val wikipediaUrl: String
  <runtime stability> = Stable
}
stable class ly.david.musicsearch.shared.domain.work.WorkAttributeUiModel {
  stable val type: String
  stable val typeId: String
  stable val value: String
  <runtime stability> = Stable
}
