declare class GLMReactComponent {
  props: any;
  state: any;
  constructor(props?: any);
  setState(state: any, callback?: () => void): void;
  forceUpdate(callback?: () => void): void;
}

interface Window {
  React: {
    Component: typeof GLMReactComponent;
    createElement: (...args: any[]) => any;
    Fragment?: any;
    [key: string]: any;
  };
  ReactDOM: { render: (...args: any[]) => any; [key: string]: any };
  GLMChat: any;
  GLMChatA11y: any;
  GLMChatNative: any;
  GLMChatOffline: any;
  GLMChatPlatform: any;
  GLMCHAT_CACHE_VERSION: any;
  __GLMCHAT_SYNC_TEST_REGISTRATION__: any;
  navigation: any;
  [key: string]: any;
}

interface Navigator { standalone?: boolean }
interface EventTarget { closest?(selectors: string): Element | null; dataset?: DOMStringMap }
interface Element { focus(options?: FocusOptions): void; dataset: DOMStringMap }
interface PerformanceEntry { hadRecentInput?: boolean; value?: number }
interface PerformanceObserverInit { durationThreshold?: number }
