import { type VariantProps } from 'class-variance-authority';
import * as React from 'react';
import { type BadgeProps } from '@/components/atoms/display/Badge';
import { type AvatarProps } from '@/components/molecules/data/Avatar';
declare const activityFeedVariants: (props?: ({
    divider?: "none" | "divider" | "connector" | null | undefined;
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
declare const activityItemVariants: (props?: ({
    type?: "messages" | "notifications" | null | undefined;
    divider?: "none" | "divider" | "connector" | null | undefined;
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
export type ActivityItemContentType = 'file' | 'message' | 'labels' | 'simple';
export interface FileContent {
    type: 'file';
    fileName: string;
    fileSize: string;
    fileExtension?: string;
}
export interface MessageContent {
    type: 'message';
    message: string;
    /** Optional @mentions to highlight */
    mentions?: string[];
}
export interface LabelsContent {
    type: 'labels';
    labels: Array<{
        text: string;
        color?: BadgeProps['color'];
    }>;
}
export interface SimpleContent {
    type: 'simple';
}
export type ActivityContent = FileContent | MessageContent | LabelsContent | SimpleContent;
export interface ActivityFeedItemProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'content'> {
    /** User/person info */
    user: {
        name: string;
        avatarSrc?: string;
        online?: boolean;
    };
    /** Timestamp (e.g., "Just now", "2 mins ago", "5:20pm 20 Jan 2025") */
    timestamp: string;
    /** Machine-readable ISO 8601 timestamp for the <time> element */
    dateTime?: string;
    /** Activity description with optional link text */
    activity: {
        /** Plain text part of activity (e.g., "Added a file to") */
        text: string;
        /** Link text to highlight (e.g., "Marketing site redesign") */
        link?: string;
        /** Link href */
        linkHref?: string;
    };
    /** Additional content (file attachment, message bubble, labels) */
    content?: ActivityContent;
    /** Show unread dot indicator */
    unread?: boolean;
    /** Avatar size */
    avatarSize?: AvatarProps['size'];
    /** Divider style - affects connector line visibility */
    divider?: 'divider' | 'connector' | 'none';
    /** Feed type */
    feedType?: 'notifications' | 'messages';
    /** For messages type: show username handle */
    userHandle?: string;
    /** Whether to show content details. Defaults to true. */
    expanded?: boolean;
    /** Internal: whether this is the last item (hides connector) */
    isLast?: boolean;
}
declare const ActivityFeedItem: React.NamedExoticComponent<ActivityFeedItemProps & React.RefAttributes<HTMLDivElement>>;
export interface ActivityFeedProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof activityFeedVariants> {
    /** Feed items */
    items?: ActivityFeedItemProps[];
    /** Feed type affects styling */
    type?: 'notifications' | 'messages';
    /** Whether the feed is loading/updating (sets aria-busy) */
    loading?: boolean;
    /** Children (alternative to items prop — note: stagger animations are not auto-applied to children) */
    children?: React.ReactNode;
}
declare const ActivityFeed: React.ForwardRefExoticComponent<ActivityFeedProps & React.RefAttributes<HTMLDivElement>>;
export { ActivityFeed, ActivityFeedItem, activityFeedVariants, activityItemVariants, };
