import type { ReactNode } from 'react'; import type { ExtensionHostApi, ExtensionSDK, LookerHostData, RawVisualizationData, TileHostData, TileSDK, VisualizationSDK } from '@looker/extension-sdk'; export interface BaseExtensionContextData { extensionSDK: ExtensionSDK; lookerHostData?: Readonly; initializeError?: string; route: string; routeState?: any; visualizationData?: Readonly; visualizationSDK: VisualizationSDK; tileHostData: Readonly; tileSDK: TileSDK; } export interface RouteData { route: string; routeState?: any; } export interface ExtensionProviderProps { hostTracksRoute?: boolean; onPathnameChange?: (pathname: string) => void; onRouteChange?: (route: string, routeState?: any) => void; loadingComponent?: JSX.Element; requiredLookerVersion?: string; chattyTimeout?: number; children?: ReactNode; } export interface ExtensionConnectorProps extends ExtensionProviderProps { contextData: BaseExtensionContextData; connectedCallback: (extensionSDK: ExtensionHostApi) => void; updateContextData: (contextData: Partial) => void; unloadedCallback: () => void; }