export declare interface ChangelogBadgeOptions { /** The remote `rss.xml` URL. */ readonly url: string; /** Poll interval. Defaults to 6 hours. */ readonly intervalMs?: number; } export declare interface ChangelogBadgeState { readonly hasUnread: boolean; readonly latest: LatestRelease | null; /** Mark the current latest release as seen (clears the badge). */ readonly markRead: () => void; } /** A version of the badge as a pure reducer over (latest, lastSeen). */ export declare const computeHasUnread: (latest: LatestRelease | null, lastSeen: string | null) => boolean; /** The newest release as read off the remote feed. */ export declare interface LatestRelease { readonly title: string; readonly link: string; readonly slug: string; readonly pubDate: string; } /** Extract the first item's fields from an RSS feed string. Tiny + tolerant. */ export declare const parseFirstRssItem: (xml: string) => LatestRelease | null; /** * In-product "What's new" badge state. Polls the feed on mount and every * `intervalMs`; returns `hasUnread` + the `latest` release + `markRead`. */ export declare const useChangelogBadge: (options: ChangelogBadgeOptions) => ChangelogBadgeState; export { }