import React from 'react'; import type { DiningCatalogPayload, DiningCatalogItem, DiningSceneStatePayload, DiningMenuUIPayload, DiningErrorPayload, CompassSide, DisplaySide, SideSeatAssignmentPayload } from '../types/dining-iframe-types.js'; import type { ConfiguratorState, Selection } from './ov25-ui-context.js'; import type { DiningCallbacksConfig, DiningCommercePayload, DiningDisplayMode, DiningStyleImagesConfig } from '../types/dining-inject-config.js'; import type { UnifiedPricePayload, UnifiedSkuPayload } from '../types/inject-config.js'; export type DiningStep = 'style' | 'table' | 'chairs' | 'review'; export type DiningBuilderMode = 'full-range' | 'mix-and-match'; export interface DiningUIContextType { shadowDOMs?: { sidebar?: ShadowRoot; fullPage?: ShadowRoot; controls?: ShadowRoot; }; cssString?: string; displayMode: DiningDisplayMode; logoURL?: string; mobileLogoURL?: string; styleImages?: DiningStyleImagesConfig; hideLogo: boolean; hidePricing: boolean; disableAddToCart: boolean; hideAr: boolean; catalog: DiningCatalogPayload | null; tables: DiningCatalogItem[]; chairs: DiningCatalogItem[]; benches: DiningCatalogItem[]; sceneState: DiningSceneStatePayload | null; selectedTableItem: DiningCatalogItem | null; globalChairCount: number; sideAssignments: Partial>; uniqueChairSides: DisplaySide[]; selectedObject: string | null; selectedAttachmentPoint: { tableId: number; side: CompassSide; index: number; } | null; loading: Record; isAnyLoading: boolean; isReady: boolean; menuUI: DiningMenuUIPayload | null; lastError: DiningErrorPayload | null; commerceSkuSnapshot: UnifiedSkuPayload | null; commercePriceSnapshot: UnifiedPricePayload | null; diningCommercePayload: DiningCommercePayload; activeStep: DiningStep; setActiveStep: (step: DiningStep) => void; steps: DiningStep[]; builderMode: DiningBuilderMode; setBuilderMode: (mode: DiningBuilderMode) => void; canAdvance: boolean; nextStep: () => void; prevStep: () => void; configuratorState: ConfiguratorState | undefined; setConfiguratorState: React.Dispatch>; selectTable: (item: DiningCatalogItem) => void; setChairCount: (count: number) => void; setManualSideCounts: (tableConfigId: number, sides: Partial>) => void; toggleUniqueSide: (side: DisplaySide) => void; selectAttachmentPoint: (tableId: number, side: CompassSide, index: number) => void; clearPicking: () => void; selectSeatProduct: (item: DiningCatalogItem, side?: CompassSide) => void; selectObject: (path: string) => void; closeModuleMenu: () => void; viewInRoom: () => void; toggleDimensions: () => void; enlargeViewer: () => void; addToBasket: () => void; handleSelectionSelect: (selection: Selection, optionId?: string) => void; iframeRef: React.RefObject; isMobile: boolean; uniqueId?: string; } export declare function useDiningUI(): DiningUIContextType; interface DiningUIProviderProps { children: React.ReactNode; uniqueId?: string; cssString?: string; forceMobile?: boolean; displayMode?: DiningDisplayMode; includeStyleStep?: boolean; callbacks?: DiningCallbacksConfig; logoURL?: string; mobileLogoURL?: string; styleImages?: DiningStyleImagesConfig; hideLogo?: boolean; hidePricing?: boolean; disableAddToCart?: boolean; hideAr?: boolean; currencySymbol?: string; shadowDOMs?: { sidebar?: ShadowRoot; fullPage?: ShadowRoot; controls?: ShadowRoot; }; } export declare const DiningUIProvider: React.FC; export {};