import { ETypeBadge } from '../../components/TypeBadge';
import { EIconName } from '../../components/Icon/constants';
import { TAdvancedGalleryView } from '../../components/AdvancedGallery';
export type TTypeBadge = 'senescence' | 'supplements' | 'outline' | 'energy' | 'metabolism' | 'labs';
export type TProductFeature = {
    label: string;
    type: ETypeBadge;
    description?: string;
    collapsible?: boolean;
};
export type TReviewsStats = {
    stars?: number;
    totalReviews?: number;
};
export type TQuoteComponentView = {
    prefix: 'quotation_marks';
    color: 'indigo' | 'ochre' | 'grey' | 'solar';
    quote: string;
    sourcePrefix?: 'hyphen';
    source?: string;
};
export type TPriceDisplayComponentView = {
    description: string;
    price: number;
    period: 'none' | 'month' | 'quarter' | 'year';
    prefix?: string;
};
export type TInternalPlainFeatureItemView = {
    text: string;
    superscript?: number;
    icon: EIconName;
    href?: string;
};
export type TPlainFeaturesGroupView = {
    items: Array<TInternalPlainFeatureItemView>;
};
export type TRatingPreviewView = {
    text?: string;
    rating: TReviewsStats;
};
export type TIndividualProductCardV2Base = {
    zenpatientId: string;
    signupUrl: string;
    name: string;
    images: Array<string>;
    advancedGallery?: TAdvancedGalleryView;
    features: Array<TProductFeature>;
    description?: string;
    label?: string;
    rating?: TReviewsStats;
    quote?: TQuoteComponentView;
    featuresGroup?: TPlainFeaturesGroupView;
    ratingPreview?: TRatingPreviewView;
    button: {
        text: string;
        link: string;
    };
};
export type TIndividualProductCardBasicV2View = TIndividualProductCardV2Base & {
    view?: 'basic';
};
export type TIndividualProductCardPricingV2View = TIndividualProductCardV2Base & {
    view?: 'pricing_display';
    priceDisplay?: Array<TPriceDisplayComponentView>;
};
export type TIndividualProductCardPlansV2View = TIndividualProductCardV2Base & {
    view?: 'plans_list';
    plans?: Array<TProductPlan>;
    selectedPlanId?: string;
    onSelectPlan?: (planId: TProductPlan['id']) => void;
};
export type TProductPlan = {
    id: string;
    label: string;
    price: number;
    totalPrice: number;
    monthlyPrice?: number;
    savingsPercentage?: number;
    duration?: 'one-time' | 'day' | 'month' | 'year';
    durationAmount?: number;
    featured?: boolean;
};
export type TIndividualProductCardV2View = TIndividualProductCardBasicV2View | TIndividualProductCardPricingV2View | TIndividualProductCardPlansV2View;
