/** * Generate schema.org `ItemList` JSON-LD for a carousel of items. * * Each carousel item is emitted as a `ListItem` containing a `Thing` * (Product, Article, Movie, etc.) depending on the provided item fields. * Currency and availability values are normalized where applicable; use * `skipInvalidCurrency` to bypass currency validation. * * See `CarouselSchemaOptions` and `CarouselItem` for input details. * @returns A JSON-LD compatible `ItemList` object */ interface CarouselImage { url: string; width?: number; height?: number; } interface CarouselItem { id?: string; name: string; url?: string; image?: string | CarouselImage; description?: string; type?: string; price?: string | number; priceCurrency?: string; aggregateRating?: { ratingValue: number | string; reviewCount?: number; bestRating?: number; worstRating?: number; }; offers?: Array<{ price: string | number; priceCurrency?: string; availability?: string; url?: string; priceValidUntil?: string; priceRange?: { low?: string | number; high?: string | number; }; }>; } interface CarouselSchemaOptions { name?: string; url?: string; items: CarouselItem[]; skipInvalidCurrency?: boolean; } declare const generateCarouselSchema: ({ name, url, items, skipInvalidCurrency, }: CarouselSchemaOptions) => any; export { generateCarouselSchema };