import type { Product, ProductImage, ProductListItem, ProductVariation } from './types/shop.js'; export interface SearchMatchSegment { text: string; matched: boolean; } export declare function normalizeSearchQuery(query: string): string; export declare function matchesSearchQuery(product: Pick, query: string): boolean; export declare function filterProducts>(products: T[], query: string): T[]; export declare function filterProductsByCategory>(products: T[], categorySlug: string): T[]; export declare function highlightSearchMatch(text: string, query: string): SearchMatchSegment[]; export declare function getEffectivePrice(product: Pick): number; export declare function hasDiscount(product: Pick): boolean; export declare function isInStock(stockStatus: string): boolean; export interface PurchasableStock { stockQuantity?: number | null; stockStatus?: string | null; trackInventory?: boolean | null; } export declare function getMaxPurchasableQuantity(item: PurchasableStock): number | null; export declare function clampPurchasableQuantity(item: PurchasableStock, quantity: number): number; export declare function getProductLink(product: Pick): string; export declare function getCategoryLabel(product: Pick): string; export declare function getPrimaryImage(product: Pick): ProductImage | null; export declare function toCartProduct(product: Product, variation?: ProductVariation): ProductListItem; export declare function findVariation(variations: ProductVariation[], selections: Record): ProductVariation | undefined; export declare function getVariationLabel(variation: ProductVariation): string; export declare function isSubscriptionProduct(product: Pick): boolean; export declare function formatSubscriptionPrice(price: number, billingCycle: string, currency?: string): string; export declare function getMonthlyEquivalent(plan: { price: number; billingCycle: string; }): number; export declare function getRelatedProducts>(current: Pick, products: T[], limit?: number): T[]; //# sourceMappingURL=shop.d.ts.map