// Code generated by ndpgen. DO NOT EDIT.
//
// This file provides stub implementations for non-WASM platforms.
// It allows Go plugins to compile and run tests outside of WASM,
// but the actual functionality is only available in WASM builds.
//
//go:build !wasip1

package sonicsimilarity

import "github.com/navidrome/navidrome/plugins/pdk/go/types"

// Deprecated: use types.ArtistRef.
type ArtistRef = types.ArtistRef

// Deprecated: use types.SongRef.
type SongRef = types.SongRef

// FindSonicPathRequest represents the FindSonicPathRequest data structure.
type FindSonicPathRequest struct {
	StartSong types.SongRef `json:"startSong"`
	EndSong   types.SongRef `json:"endSong"`
	Count     int32         `json:"count"`
}

// GetSonicSimilarTracksRequest represents the GetSonicSimilarTracksRequest data structure.
type GetSonicSimilarTracksRequest struct {
	Song  types.SongRef `json:"song"`
	Count int32         `json:"count"`
}

// SonicMatch represents the SonicMatch data structure.
type SonicMatch struct {
	Song       types.SongRef `json:"song"`
	Similarity float64       `json:"similarity"`
}

// SonicSimilarityResponse represents the SonicSimilarityResponse data structure.
type SonicSimilarityResponse struct {
	Matches []SonicMatch `json:"matches"`
}

// SonicSimilarity requires all methods to be implemented.
// SonicSimilarity provides audio-similarity based track discovery.
type SonicSimilarity interface {
	// GetSonicSimilarTracks
	GetSonicSimilarTracks(GetSonicSimilarTracksRequest) (SonicSimilarityResponse, error)
	// FindSonicPath
	FindSonicPath(FindSonicPathRequest) (SonicSimilarityResponse, error)
}

// NotImplementedCode is the standard return code for unimplemented functions.
const NotImplementedCode int32 = -2

// Register is a no-op on non-WASM platforms.
// This stub allows code to compile outside of WASM.
func Register(_ SonicSimilarity) {}
