export type SongbookCategory = 'opm' | 'international' | 'ballad' | 'rock' | 'duet' | 'alternative' | 'oldies' | 'love';
export interface SongbookEntry {
    id: string;
    title: string;
    artist: string;
    category: SongbookCategory;
    /** Override for Videoke search; default is `${artist} ${title}` */
    searchQuery?: string;
}
export interface Songbook {
    version: 1;
    updatedAt: string;
    entries: SongbookEntry[];
}
export declare const SONGBOOK_CATEGORIES: readonly SongbookCategory[];
export declare const SONGBOOK_CATEGORY_LABELS: Record<SongbookCategory, string>;
export declare function defaultSongbookSearchQuery(entry: Pick<SongbookEntry, 'artist' | 'title'>): string;
export declare function songbookEntryId(artist: string, title: string): string;
/** Strip trailing karaoke / official video tags from YouTube titles. */
export declare function cleanYouTubeSongTitle(raw: string): string;
/** Best-effort artist + title split from a YouTube search result. */
export declare function songbookEntryFromYouTube(videoTitle: string, channelTitle: string, category?: SongbookCategory): Pick<SongbookEntry, 'id' | 'title' | 'artist' | 'category'>;
//# sourceMappingURL=songbook.d.ts.map