package scrobblerimport ("context""errors""time""github.com/navidrome/navidrome/model")type Scrobble struct {model.MediaFileTimeStamp time.Time}var (ErrNotAuthorized = errors.New("not authorized")ErrRetryLater = errors.New("retry later")ErrUnrecoverable = errors.New("unrecoverable"))type Scrobbler interface {IsAuthorized(ctx context.Context, userId string) boolNowPlaying(ctx context.Context, userId string, track *model.MediaFile, position int) errorScrobble(ctx context.Context, userId string, s Scrobble) errorPlaybackReport(ctx context.Context, info PlaybackSession) error}type Constructor func(ds model.DataStore) Scrobbler