// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
// This file is automatically generated. DO NOT EDIT

/**
 * CandidateTrack represents a potential library match for a
 * phantom track.
 */
export interface CandidateTrack {
    "FilePath": string;
    "Title": string;
    "Artist": string;
    "Album": string;
    "Duration": string;
    "Score": number;
}

/**
 * DuplicateCheckResult contains the outcome of checking for
 * duplicate tracks in a playlist.
 */
export interface DuplicateCheckResult {
    "Duplicates": DuplicateTrackInfo[] | null;
    "Unique": string[] | null;
}

/**
 * DuplicateTrackInfo holds metadata for a track that already
 * exists in a playlist.
 */
export interface DuplicateTrackInfo {
    "FilePath": string;
    "Title": string;
    "Artist": string;
    "Album": string;
    "Duration": string;
}

/**
 * PhantomMatch represents a high-confidence pairing of a phantom
 * track to a library track.
 */
export interface PhantomMatch {
    "PhantomPath": string;
    "PhantomTitle": string;
    "Candidate": CandidateTrack;
}

/**
 * PhantomSearchResult contains auto-matched pairs and remaining
 * unmatched phantom paths for a batch search operation.
 */
export interface PhantomSearchResult {
    "AutoMatched": PhantomMatch[] | null;
    "Unmatched": string[] | null;
}

/**
 * Summary is a lightweight representation of a playlist for the
 * picker UI.
 */
export interface Summary {
    "ID": number;
    "Name": string;
    "CreatedAt": string;
    "UpdatedAt": string;
    "IsSmart": boolean;
}

/**
 * Track represents a track within a playlist, including its
 * metadata.
 */
export interface Track {
    "ID": number;
    "Position": number;
    "FilePath": string;
    "Title": string;
    "Artist": string;
    "Album": string;
    "CoverArtPath": string;
    "CoverArtSmall": string;
    "CoverArtMedium": string;
    "CoverArtLarge": string;
    "Duration": string;
    "Phantom": boolean;
    "ArtistMBID": string;
    "ReleaseGroupMBID": string;
    "RecordingMBID": string;
}

/**
 * WithTracks contains a playlist summary and all its tracks.
 */
export interface WithTracks {
    "Summary": Summary;
    "Tracks": Track[] | null;
}
