/**
 * AUTO-GENERATED FILE - DO NOT EDIT.
 * Generated from custom-elements manifest.
 */

import type React from 'react';
import type { AiActivityHalo as AiActivityHaloWC } from './components/activity-halo/activity-halo';
import type { AgentPicker as AgentPickerWC } from './components/agent-picker/agent-picker';
import type { AiChatBubble as AiChatBubbleWC } from './components/chat-bubble/chat-bubble';
import type { AiChatInteractionWrapper as AiChatInteractionWrapperWC } from './components/chat-interaction-wrapper/chat-interaction-wrapper';
import type { AiChatMarkdown as AiChatMarkdownWC } from './components/chat-markdown/chat-markdown';
import type { AiFlowingWavesIndicator as AiFlowingWavesIndicatorWC } from './components/flowing-waves-indicator';
import type { AiHaloOverlay as AiHaloOverlayWC } from './components/halo-overlay';
import type { AiPlasmaOrbIndicator as AiPlasmaOrbIndicatorWC } from './components/plasma-orb-indicator';
import type { FoundationAiPopoutManager as FoundationAiPopoutManagerWC } from './components/popout-manager/popout-manager';
import type { AiWavesIndicator as AiWavesIndicatorWC } from './components/waves-indicator';
import type { FoundationAiAssistant as FoundationAiAssistantWC } from './main/main';
import type { ChatSuggestions as ChatSuggestionsWC } from './suggestions/chat-suggestions';
import type { ChatHeaderMouseDownDetail, InteractionCompletedEventDetail, SessionClearedDetail } from '@genesislcap/ai-assistant';

/** @internal Maps a web component class to its public props only.
 * keyof T skips private/protected members, so this avoids the TS error
 * "property may not be private or protected" on exported anonymous types. */
type PublicOf<T> = { [K in keyof T]?: T[K] };

/** @internal Safe React HTML attributes for web component wrappers.
 * onChange/onInput use method signatures for bivariant parameter checking so both
 * native Event and CustomEvent callbacks are accepted. */
interface HTMLWCProps extends React.AriaAttributes {
  className?: string; style?: React.CSSProperties; id?: string; slot?: string;
  tabIndex?: number; dir?: string; lang?: string; title?: string;
  onClick?: React.MouseEventHandler<HTMLElement>;
  onDoubleClick?: React.MouseEventHandler<HTMLElement>;
  onContextMenu?: React.MouseEventHandler<HTMLElement>;
  onMouseEnter?: React.MouseEventHandler<HTMLElement>;
  onMouseLeave?: React.MouseEventHandler<HTMLElement>;
  onMouseDown?: React.MouseEventHandler<HTMLElement>;
  onMouseUp?: React.MouseEventHandler<HTMLElement>;
  onMouseMove?: React.MouseEventHandler<HTMLElement>;
  onKeyDown?: React.KeyboardEventHandler<HTMLElement>;
  onKeyUp?: React.KeyboardEventHandler<HTMLElement>;
  onFocus?: React.FocusEventHandler<HTMLElement>;
  onBlur?: React.FocusEventHandler<HTMLElement>;
  onScroll?: React.UIEventHandler<HTMLElement>;
  onWheel?: React.WheelEventHandler<HTMLElement>;
  onChange?(e: Event): void;
  onInput?(e: Event): void;
}

export declare const AiFlowingWavesIndicator: React.ForwardRefExoticComponent<
  React.PropsWithChildren<
    Omit<PublicOf<AiFlowingWavesIndicatorWC>, 'children' | 'style'> &
    HTMLWCProps & {
    }
  > & React.RefAttributes<AiFlowingWavesIndicatorWC>
>;
export type AiFlowingWavesIndicatorRef = AiFlowingWavesIndicatorWC;

export declare const AiHaloOverlay: React.ForwardRefExoticComponent<
  React.PropsWithChildren<
    Omit<PublicOf<AiHaloOverlayWC>, 'children' | 'style'> &
    HTMLWCProps & {
    }
  > & React.RefAttributes<AiHaloOverlayWC>
>;
export type AiHaloOverlayRef = AiHaloOverlayWC;

export declare const AiPlasmaOrbIndicator: React.ForwardRefExoticComponent<
  React.PropsWithChildren<
    Omit<PublicOf<AiPlasmaOrbIndicatorWC>, 'children' | 'style'> &
    HTMLWCProps & {
    }
  > & React.RefAttributes<AiPlasmaOrbIndicatorWC>
>;
export type AiPlasmaOrbIndicatorRef = AiPlasmaOrbIndicatorWC;

export declare const AiWavesIndicator: React.ForwardRefExoticComponent<
  React.PropsWithChildren<
    Omit<PublicOf<AiWavesIndicatorWC>, 'children' | 'style'> &
    HTMLWCProps & {
    }
  > & React.RefAttributes<AiWavesIndicatorWC>
>;
export type AiWavesIndicatorRef = AiWavesIndicatorWC;

export declare const FoundationAiAssistant: React.ForwardRefExoticComponent<
  React.PropsWithChildren<
    Omit<PublicOf<FoundationAiAssistantWC>, 'children' | 'style'> &
    HTMLWCProps & {
      onChatHeaderMousedown?: (event: CustomEvent<ChatHeaderMouseDownDetail>) => void;
      onSessionCleared?: (event: CustomEvent<SessionClearedDetail>) => void;
    }
  > & React.RefAttributes<FoundationAiAssistantWC>
>;
export type FoundationAiAssistantRef = FoundationAiAssistantWC;

export declare const ChatSuggestions: React.ForwardRefExoticComponent<
  React.PropsWithChildren<
    Omit<PublicOf<ChatSuggestionsWC>, 'children' | 'style'> &
    HTMLWCProps & {
    }
  > & React.RefAttributes<ChatSuggestionsWC>
>;
export type ChatSuggestionsRef = ChatSuggestionsWC;

export declare const AiActivityHalo: React.ForwardRefExoticComponent<
  React.PropsWithChildren<
    Omit<PublicOf<AiActivityHaloWC>, 'children' | 'style'> &
    HTMLWCProps & {
    }
  > & React.RefAttributes<AiActivityHaloWC>
>;
export type AiActivityHaloRef = AiActivityHaloWC;

export declare const AgentPicker: React.ForwardRefExoticComponent<
  React.PropsWithChildren<
    Omit<PublicOf<AgentPickerWC>, 'children' | 'style'> &
    HTMLWCProps & {
      onAgentPinned?: (event: CustomEvent<string | null>) => void;
    }
  > & React.RefAttributes<AgentPickerWC>
>;
export type AgentPickerRef = AgentPickerWC;

export declare const AiChatBubble: React.ForwardRefExoticComponent<
  React.PropsWithChildren<
    Omit<PublicOf<AiChatBubbleWC>, 'children' | 'style'> &
    HTMLWCProps & {
    }
  > & React.RefAttributes<AiChatBubbleWC>
>;
export type AiChatBubbleRef = AiChatBubbleWC;

export declare const AiChatInteractionWrapper: React.ForwardRefExoticComponent<
  React.PropsWithChildren<
    Omit<PublicOf<AiChatInteractionWrapperWC>, 'children' | 'style'> &
    HTMLWCProps & {
      onRequestScrollToBottom?: (event: CustomEvent<unknown>) => void;
      onInteractionCompleted?: (event: CustomEvent<InteractionCompletedEventDetail>) => void;
    }
  > & React.RefAttributes<AiChatInteractionWrapperWC>
>;
export type AiChatInteractionWrapperRef = AiChatInteractionWrapperWC;

export declare const FoundationAiPopoutManager: React.ForwardRefExoticComponent<
  React.PropsWithChildren<
    Omit<PublicOf<FoundationAiPopoutManagerWC>, 'children' | 'style'> &
    HTMLWCProps & {
    }
  > & React.RefAttributes<FoundationAiPopoutManagerWC>
>;
export type FoundationAiPopoutManagerRef = FoundationAiPopoutManagerWC;

export declare const AiChatMarkdown: React.ForwardRefExoticComponent<
  React.PropsWithChildren<
    Omit<PublicOf<AiChatMarkdownWC>, 'children' | 'style'> &
    HTMLWCProps & {
    }
  > & React.RefAttributes<AiChatMarkdownWC>
>;
export type AiChatMarkdownRef = AiChatMarkdownWC;

export {};
