import React from 'react';
import type { ComponentPropsWithoutRef, ReactNode } from 'react';
import type { IconName } from '../../tokens/icons';
export interface Feature {
    /**
     * Optional icon shown before the feature text.
     * Provide an IconName or a custom ReactNode.
     */
    icon?: IconName | ReactNode;
    /**
     * Feature text or content.
     */
    text: ReactNode;
}
export interface ListItemProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {
    /**
     * Primary title for the row.
     */
    title: ReactNode;
    /**
     * Optional supporting text (e.g., city, description).
     */
    subtitle?: ReactNode;
    /**
     * Optional metadata rendered inline on mobile and in a separate column on desktop.
     */
    metadata?: ReactNode;
    /**
     * Optional visual shown to the left of the text.
     */
    media?: string | ReactNode;
    /**
     * Accessible alternative text for the media when a URL is provided.
     */
    mediaAlt?: string;
    /**
     * Optional rank or index shown on desktop.
     */
    rank?: ReactNode;
    /**
     * Optional feature list displayed below the subtitle.
     */
    features?: Feature[];
    /**
     * Optional trailing action element (icon button, button, etc.).
     */
    action?: ReactNode;
    /**
     * Handler for trailing action clicks. Stops propagation to avoid triggering row click.
     */
    onActionClick?: (event: React.MouseEvent) => void;
    /**
     * Hide metadata from the inline mobile row.
     */
    hideMetadataOnMobile?: boolean;
    /**
     * Enable hover/focus states even without an onClick handler.
     */
    interactive?: boolean;
    /**
     * Row click handler.
     */
    onClick?: (event: React.MouseEvent<HTMLDivElement>) => void;
    /**
     * Loading state for individual list items.
     * @default false
     */
    loading?: boolean;
}
export declare const ListItem: React.ForwardRefExoticComponent<ListItemProps & React.RefAttributes<HTMLDivElement>>;
//# sourceMappingURL=ListItem.d.ts.map