export interface User { id: string; handle: string; displayName: string; avatarUrl?: string | null; bio?: string | null; headerUrl?: string | null; followersCount?: number; followingCount?: number; postsCount?: number; website?: string | null; createdAt?: string; movedTo?: string | null; isRemote?: boolean; profileUrl?: string | null; isBot?: boolean; botOwner?: { id: string; handle: string; displayName?: string | null; avatarUrl?: string | null; } | null; } export interface MediaItem { id: string; url: string; altText?: string | null; } export interface Attachment { id: string; url: string; altText?: string | null; } export interface Post { id: string; content: string; createdAt: string; likesCount: number; repostsCount: number; repliesCount: number; author: User; media?: MediaItem[]; linkPreviewUrl?: string | null; linkPreviewTitle?: string | null; linkPreviewDescription?: string | null; linkPreviewImage?: string | null; replyTo?: { author: { handle: string; displayName: string; }; } | null; isLiked?: boolean; isReposted?: boolean; bot?: { id: string; name: string; handle: string; ownerId: string; } | null; nodeDomain?: string | null; // Domain of the node this post came from (for swarm posts) }