/** Generates shareable SVG cards for taste profiles, compatibility, and year-in-review */ import type { TasteProfile } from "./taste.js"; import type { WrappedStats } from "./wrapped.js"; /** Fetch an image URL and return a base64 data URI, or null on failure */ export declare function fetchAvatarB64(url: string): Promise; /** Build an SVG taste profile card */ export declare function buildTasteCardSvg(username: string, profile: TasteProfile, avatarB64?: string | null): string; export interface CompatCardData { user1: string; user2: string; compatibility: number; sharedCount: number; sharedFavorites: Array<{ title: string; score1: number; score2: number; }>; divergences: string[]; profile1: TasteProfile; profile2: TasteProfile; avatar1?: string | null; avatar2?: string | null; } /** Build an SVG compatibility comparison card */ export declare function buildCompatCardSvg(data: CompatCardData): string; export interface WrappedCardData { username: string; avatarB64: string | null; stats: WrappedStats; topRatedCoverB64?: string | null; controversialCoverB64?: string | null; } /** Build an SVG year-in-review card */ export declare function buildWrappedCardSvg(data: WrappedCardData): string; export interface SeasonalRecapData { username: string; season: string; year: number; avatarB64: string | null; picked: number; finished: number; dropped: number; watching: number; avgScore: number; topPicks: Array<{ title: string; score: number; coverB64?: string | null; }>; } /** Build an SVG seasonal recap card */ export declare function buildSeasonalRecapCardSvg(data: SeasonalRecapData): string; /** Render an SVG string to a PNG buffer */ export declare function svgToPng(svg: string): Promise;