/** * Create schema.org structured data for a single `Product` with optional * `Review` and `Offer` entries. * * Supports brand and seller references, image normalization, review * formatting and simple availability/price handling. Use * `skipInvalidCurrency` to avoid throwing on bad currency codes. * * See `ProductSnippetOptions` for accepted fields. * @returns A JSON-LD compatible `Product` object */ interface BrandRef { name: string; url?: string; } interface SellerRef { name?: string; url?: string; } interface ReviewRating { ratingValue: number | string; bestRating?: number | string; } interface ReviewItem { author?: string | { name: string; }; datePublished?: string; reviewBody?: string; reviewRating?: ReviewRating; } interface OfferItem { price?: string | number; priceCurrency?: string; availability?: string; url?: string; seller?: SellerRef; priceValidUntil?: string; itemCondition?: string; } interface ProductSnippetOptions { name: string; description?: string; image?: string | { url: string; width?: number; height?: number; }; sku?: string; brand?: string | BrandRef; reviews?: ReviewItem[]; offers?: OfferItem | OfferItem[]; skipInvalidCurrency?: boolean; } declare const generateShoppingProductSnippetSchema: ({ name, description, image, sku, brand, reviews, offers, skipInvalidCurrency, }: ProductSnippetOptions) => any; export { generateShoppingProductSnippetSchema };