import { ClusterOption, Contact, Customer, Product } from '@propeller-commerce/propeller-sdk-v2'; /** * Flattened render model for one product inside an option dropdown. */ /** * Flattened render model for one cluster option group, precomputed * to avoid calling state methods with arguments inside JSX. */ export interface ClusterOptionsProps { /** * The cluster ID this options selector belongs to. * @required */ clusterId: number; /** Currency symbol to display. Defaults to '€'. */ currency?: string; /** Authenticated user. Resolved from PropellerProvider when omitted. */ user?: Contact | Customer | null; /** * Portal access mode. In `'semi-closed'` option prices are omitted from the * dropdown labels and preview for anonymous visitors. */ portalMode?: string; /** * An array of options that belong to the cluster. * Hidden options (option.hidden === 'Y') are automatically filtered out. * @required */ options: ClusterOption[]; /** * Fired whenever the user selects a product within any option group. * Receives the full Product object of the chosen option product. * Usually used to trigger a price update on the parent page. */ onOptionSelect?: (optionProduct: Product) => void; /** * Fired whenever the user clears an option (picks the empty/default entry * in a non-required dropdown). Receives the option's `id`. Parents should * remove that key from their `selectedOptionProducts` map so the price * display drops the option's add-on price. */ onOptionClear?: (optionId: number) => void; /** Override any UI string. Available keys: required, selectRequired, selectOptional, requiredError */ labels?: Record; /** When true, required options with no selection are highlighted with a validation error. */ showErrors?: boolean; /** Extra CSS class applied to the root element. */ className?: string; } declare const _default: import('vue').DefineComponent & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>; export default _default;