/** * Re-render a release's body with shiki-highlighted code fences. Node * only — returns the input unchanged in the browser (the plain `marked` * `
` already shipped). Call this in a build step / SSR pass.
 */
export declare const highlightRelease: (release: Release) => Promise;

/**
 * Parse a raw-string glob map into typed releases, sorted reverse-
 * chronologically (newest first). Invalid frontmatter (missing version
 * or releasedAt) is skipped. Slugs default to a slugified version.
 *
 * By default, `draft: true` releases and `releasedAt`-in-the-future releases
 * are EXCLUDED — so you can stage an upcoming release in `content/releases/`
 * without it leaking into the rendered list or RSS feed. Override per flag
 * (`includeDrafts` / `includeFuture`) — e.g. a preview build.
 */
export declare const loadReleases: (sources: Readonly>, options?: LoadReleasesOptions) => ReadonlyArray;

/** Options for `loadReleases`. */
export declare interface LoadReleasesOptions {
    /** Include releases whose frontmatter has `draft: true`. Default `false`
     *  (drafts are excluded from the rendered list + RSS feed). */
    readonly includeDrafts?: boolean;
    /** Include releases whose `releasedAt` is in the FUTURE relative to `now`.
     *  Default `false` (future-dated releases are staged-but-hidden until the
     *  date arrives — no rebuild needed if the site re-renders after it passes). */
    readonly includeFuture?: boolean;
    /** The "now" instant future-dating is compared against. Default: the current
     *  wall clock. Inject for deterministic builds/tests. */
    readonly now?: Date;
}

/** A single parsed release. */
export declare interface Release {
    readonly version: string;
    readonly releasedAt: string;
    readonly slug: string;
    readonly tags: ReadonlyArray;
    readonly title: string;
    readonly summary: string;
    readonly coverImage?: string;
    /** `true` when the frontmatter carries `draft: true` — excluded from
     *  `loadReleases` output by default (pass `includeDrafts` to keep it). */
    readonly draft: boolean;
    /** The release body: markdown source, sans frontmatter. Rendered by
     *  `marked` — this is markdown, not evaluated MDX. */
    readonly body: string;
    /** HTML-rendered body. Plain `
` until `highlight()` runs (node). */
    readonly html: string;
}

export declare const RELEASE_TAGS: ReadonlyArray;

/** A changelog release tag. */
export declare type ReleaseTag = 'feature' | 'fix' | 'breaking' | 'security' | 'performance';

/**
 * Render an RSS 2.0 feed body from releases. `siteUrl` is the base URL
 * each release links under (`/`). Every release becomes
 * an `` with title, summary, link, and pubDate.
 */
export declare const renderReleaseRss: (releases: ReadonlyArray, siteUrl: string, options?: RssOptions) => string;

export declare interface RssOptions {
    /** Feed ``. Defaults to "Changelog". */
    readonly title?: string;
    /** Feed `<description>`. */
    readonly description?: string;
}

export { }