import React from 'react';
/**
 * Card density. Two variants, both actively used across openframe + flamingo
 * apps and the related-content rail:
 *
 * - `lg`: rich large card used everywhere a product release is the focal
 *   item — openframe's `/releases` catalog row, flamingo's DevCenter tab,
 *   investor-update related-content section. Three zones — hero (16:9 cover
 *   + version pill + title + summary), changelog stats strip (icons +
 *   counts), metadata grid footer (Type · Status · Released · Author). The
 *   grid mirrors the hub's `<EntityAuthorCard>` byte-for-byte (see lg
 *   branch comment).
 *
 * - `sm`: compact horizontal layout (~80px tall) for inline rendering inside
 *   chat messages and other tight surfaces. Drops `<h3>` (block-only,
 *   illegal inside markdown `<p>`) for `<span>` text, swaps the outer
 *   `InteractiveCard` for a `<span>`-anchored link, and collapses to:
 *   56px icon + 1-line title + 1-line meta (version · date).
 *
 * A previous `default` variant (vertical title+description / version+date
 * column) was deleted in the 2026-05 DRY pass — it had a single consumer
 * (the hub's RelatedContentSection) that has since moved to `lg`.
 */
export type ProductReleaseCardSize = 'lg' | 'sm';
/**
 * Minimal structural `<a>` prop bundle the consumer composes (typically
 * via the hub's `useNavLink` hook — single source of truth for click
 * routing). Kept structural here so the OSS lib has zero hub coupling;
 * the consumer's `NavLinkProps` is type-compatible by shape.
 *
 * When supplied, the outer element renders as `<a {...anchorProps}>` so
 * the SAME routing decision (modifier-click → browser default, cross-
 * origin → new tab, same-origin → `router.push`) runs identically to
 * every other entity card. When absent, the legacy `onClick` branch is
 * used (back-compat for the public `/releases` page).
 */
export interface ProductReleaseCardAnchorProps {
    href: string;
    target?: '_blank';
    rel?: 'noopener noreferrer';
    onClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;
}
export interface ProductReleaseCardProps {
    /** Release title */
    title: string;
    /** Release summary/description */
    summary?: string | null;
    /** Version string (e.g., "1.2.0") */
    version: string;
    /** Formatted date string for display */
    formattedDate: string;
    /**
     * Legacy click handler — kept for back-compat with public-page callers
     * (e.g. `/releases` tab) that route via `router.push()` directly. When
     * `anchorProps` is also supplied, `anchorProps` wins and this is
     * ignored.
     */
    onClick?: () => void;
    /**
     * `<a>` prop bundle from the consumer's `useNavLink` (or equivalent).
     * When provided, the card's outer element renders as a real anchor so
     * routing (cross-origin → new tab, same-origin → soft RSC nav,
     * modifier-click → browser default) is owned by the hook — the card
     * writes NO click logic of its own. This is the path every other
     * entity card uses; `onClick` is only kept for the one legacy caller.
     */
    anchorProps?: ProductReleaseCardAnchorProps;
    /** Additional CSS classes */
    className?: string;
    /** Card density. Defaults to `'lg'` (the canonical large card). */
    size?: ProductReleaseCardSize;
    /** Cover image URL. Falls back to a neutral `Package`-icon placeholder. */
    coverImage?: string | null;
    /** Drives the Play overlay on the cover. Caller sets `true` when the cover
     *  came from a `*_video_thumbnail` field. */
    hasVideoCover?: boolean;
    /** Release type for the metadata grid's first cell. */
    releaseType?: 'major' | 'minor' | 'patch' | 'beta' | 'alpha';
    /** Release status for the metadata grid's second cell. */
    releaseStatus?: 'alpha' | 'beta' | 'stable' | 'deprecated';
    /** Pre-computed `StatusBadge` colorScheme for the release-type chip. The
     *  hub consumer maps `release_type → colorScheme` via its local helper so
     *  the OSS card stays mapping-agnostic. */
    releaseTypeBadgeColor?: 'error' | 'cyan' | 'success' | 'warning';
    /** View count for the optional microline below the metadata grid. Hidden
     *  when zero or undefined. */
    viewCount?: number;
    /** Hydrated author (from the hub DAL's `hydrateAuthor`). When present,
     *  renders as the last cell of the metadata grid. */
    author?: {
        full_name: string;
        avatar_url: string | null;
        job_title: string | null;
    };
    /** Per-category counts for the changelog stats strip. The whole strip
     *  is hidden when total === 0. */
    changelogCounts?: {
        features: number;
        fixes: number;
        improvements: number;
        breaking: number;
    };
}
export declare function ProductReleaseCard({ title, summary, version, formattedDate, onClick, anchorProps, className, size, coverImage, hasVideoCover, releaseType, releaseStatus, releaseTypeBadgeColor, viewCount, author, changelogCounts, }: ProductReleaseCardProps): React.JSX.Element;
//# sourceMappingURL=product-release-card.d.ts.map