import * as React from "react"; import { type ProductPickerSearchRecord } from "./booking-create-utils.js"; export interface ProductPickerValue { productId: string; /** `null` means "no specific option" — the product has options but none was picked. */ optionId: string | null; sourceKind?: string; sourceConnectionId?: string; sourceRef?: string; productName?: string; supplierName?: string; sellCurrency?: string; sellAmountCents?: number | null; } export interface ProductPickerSectionProps { value: ProductPickerValue; onChange: (value: ProductPickerValue) => void; /** When true, skip data fetches (dialog closed / parent gated). */ enabled?: boolean; /** When true, hide the product picker and fix the productId (e.g., launched from a product page). */ lockProduct?: boolean; /** When false, product options are selected downstream as quantities instead of a single global choice. */ showOptionPicker?: boolean; labels?: { product?: string; productSearchPlaceholder?: string; productSelectPlaceholder?: string; option?: string; optionNone?: string; }; } /** * Controlled product + option picker. Splits `value` + `onChange` so apps can * replace the whole section (e.g., with a typeahead against a custom catalog) * without reimplementing the cascade logic, or keep this one and swap labels. */ export declare function ProductPickerSection({ value, onChange, enabled, lockProduct, showOptionPicker, labels, }: ProductPickerSectionProps): React.JSX.Element; export declare function mergeProductPickerRecords(...sources: ReadonlyArray>): Array;