import { SearchResultsPage, WithContext, Offer, AggregateRating, Thing, FAQPage, WebPage } from 'schema-dts'; import { ReviewRatingDTO } from './dto/ReviewRatingDTO'; import { OfferDTO } from './dto/OfferDTO'; import { EntityDTO } from './dto/EntityDTO'; import { FAQItemDto } from './dto/FAQItemDto'; import { BreadcrumbDTO } from './dto/BreadcrumbDTO'; import { PaywallDTO } from './dto/PaywallDTO'; import { PageTypes } from '../enums/PageTypes'; export declare abstract class SearchStructuredDataFactory { buildStructuredData(title: string, description: string, cards: TCard[], faqItems?: FAQItemDto[], breadcrumbs?: BreadcrumbDTO[], listItemStructure?: boolean, pageType?: PageTypes): Promise>; private generateMainEntities; protected abstract buildStructuredDataForCard(entity: EntityDTO): Promise | Thing | undefined; /** * Get the rating for a card. * This method should be overridden by subclasses to provide the specific rating logic. * If no rating is available, return undefined and no aggregate rating will be constructed for the card & page. * * @param card * @protected */ protected getRating(card: TCard): ReviewRatingDTO | undefined; /** * Get the offer data for a card. * This method should be overridden by subclasses to provide the specific offer logic. * If no offer is available, return undefined and no aggregate offer will be constructed for the card & page. * * @param card * @protected */ protected getOfferData(card: TCard): Promise; protected getPaywallData(): PaywallDTO | undefined; private constructOptionalPageOffers; protected constructOptionalFaqPage(faqItems: FAQItemDto[]): FAQPage | undefined; private constructOptionalPageParts; private constructOptionalBreadcrumbs; private constructPaywallElement; protected constructAggregateRating(reviewRating?: ReviewRatingDTO): AggregateRating | undefined; protected constructOffer(offerData?: OfferDTO): Offer | undefined; /** * Add paywall information to any structured data object * * @param structuredData The structured data object to enhance * @param paywallData The paywall data to add * @protected */ protected addPaywallToStructuredData(structuredData: Record, paywallData?: PaywallDTO): void; private stripHtmlWithListRetain; }