import type { GenericSBProps, Asset } from '../types'; export type NormalizedServiceOptionsPayload = { options: any; raw: any; }; export type StoryblokReferenceBlock = { component?: string; reference?: { content?: { body?: any; }; }; }; export type FilterOptionPair = { value: string; name: string; }; export type DropdownFilterOption = { value: string; name: string; label: string; itemsLength: number; codes: string[]; }; export type FilterCategoryConfigBlock = { component?: string; value?: string; name?: string; }; export interface RecommendedOptionsTabItem extends GenericSBProps { tabKey: string; tabLabel: string; active: boolean; optionsList: string[]; filterOptions?: StoryblokReferenceBlock | StoryblokReferenceBlock[]; } export interface OptionCardData extends GenericSBProps { id: string; title: string; description: string | Array; price?: string; priceUnit?: string; priceHelpText?: string; isQuantifiable?: boolean; maxQuantity?: number; moreDetailsLink?: string; productImage?: Asset; } export interface TranslationItem extends GenericSBProps { key: string; label: string; component: 'translationItem'; } export type RecommendedOptionsTranslations = TranslationItem[]; export interface RecommendedOptionsSchema extends GenericSBProps { segmentTypes: any; listHeightMobile: boolean; listHeightDesktop: number; categories: any; optionCatalogPath: string; headline: string; description: string | Array; tabs: RecommendedOptionsTabItem[]; translations: RecommendedOptionsTranslations; updateCartData: (cartData: any) => void; } export type ServiceOptionSelectionPayload = { id: string; isSelected: boolean; quantity: number; category: string; tabKey: string; offer: any; product: any; }; export interface RecommendedOptionsCallbacks { onAddToPlan?: (optionId: string, quantity?: number) => void; onQuantityChange?: (optionId: string, quantity: number) => void; onServiceOptionSelect?: (payload: ServiceOptionSelectionPayload) => void; className?: string; 'aria-label'?: string; optionDataResolver?: (optionIds: string[]) => OptionCardData[]; } export interface OptionCardProps extends OptionCardData { quantity?: number; onAddToPlan?: (id: string, quantity?: number) => void; onQuantityChange?: (id: string, quantity: number) => void; className?: string; 'aria-describedby'?: string; } export interface QuantitySelectorProps { value: number; maxQuantity: number; onChange: (quantity: number) => void; 'aria-label'?: string; } export type BaseProductWithCodes = { raw: any; codes: string[]; }; export type CategorySection = { option: DropdownFilterOption; items: BaseProductWithCodes[]; };