import { WallPost } from '../types/wall.js'; interface UseWallPhotoCarouselOptions { /** * Posts to rotate through, newest-first. Pass the array from `useWallPosts` * directly — the hook filters out posts without a `photoUrl` internally. */ posts: WallPost[]; /** Auto-rotation interval in ms. 0 disables rotation. Default 10000. */ rotationMs?: number; } interface UseWallPhotoCarouselResult { /** Posts that have a photoUrl, newest-first. */ items: WallPost[]; /** The currently displayed item, or null if nothing has a photo yet. */ active: WallPost | null; /** Index of `active` in `items`. -1 if none. */ activeIndex: number; /** Jump to a specific post id. Resets the rotation timer. */ setActive: (id: string) => void; } /** * Headless rotating-photo carousel for the non-AI wall mode. Mirrors the * `useWallScenes` ergonomics ({ items, active, activeIndex, setActive }) but * is driven by guest posts instead of AI-generated scenes. * * Behaviour: * - First load: active = items[0] (the newest post with a photo). * - Rotation tick: advance one slot; wrap at the end. * - New post arrives (id not seen before): jump to that post and reset the * rotation timer so the new arrival gets a full cycle on screen. * - Posts deleted upstream: drop from `items`; if the active item disappears, * fall back to items[0]. */ declare function useWallPhotoCarousel(opts: UseWallPhotoCarouselOptions): UseWallPhotoCarouselResult; export { type UseWallPhotoCarouselOptions, type UseWallPhotoCarouselResult, useWallPhotoCarousel };