/* eslint-disable @typescript-eslint/no-explicit-any */ export {}; declare global { interface SpeechRecognitionConstructor { new (): SpeechRecognition; } interface SpeechRecognitionAlternative { transcript: string; confidence: number; } interface SpeechRecognitionResult { length: number; isFinal: boolean; item(index: number): SpeechRecognitionAlternative; [index: number]: SpeechRecognitionAlternative; } interface SpeechRecognitionResultList { length: number; item(index: number): SpeechRecognitionResult; [index: number]: SpeechRecognitionResult; } interface SpeechRecognitionErrorEvent extends Event { error: string; } interface SpeechRecognitionEvent extends Event { resultIndex: number; results: SpeechRecognitionResultList; } interface SpeechRecognition extends EventTarget { lang: string; continuous: boolean; interimResults: boolean; maxAlternatives: number; onresult: ((event: SpeechRecognitionEvent) => void) | null; onend: (() => void) | null; onerror: ((event: SpeechRecognitionErrorEvent) => void) | null; start(): void; stop(): void; } interface VisNodeRecord { id?: string | number; from?: string | number; to?: string | number; font?: { color?: string; [key: string]: unknown; }; color?: unknown; label?: string; title?: string; size?: number; borderWidth?: number; data?: unknown; hidden?: boolean; opacity?: number; [key: string]: unknown; } interface VisDataSet { get(): T[]; update(item: Partial | Partial[]): void; add(items: T | T[]): void; clear?(): void; remove?(id: string | number | Array): void; } interface VisNetworkDataContext { nodes: VisDataSet; edges: VisDataSet; } interface VisNetwork { on( event: 'click' | 'stabilized', handler: (params: { nodes: Array }) => void ): void; on(event: 'hoverNode' | 'blurNode', handler: (params: { node: string | number }) => void): void; body: { data: VisNetworkDataContext; }; getScale(): number; setOptions?(options: unknown): void; focus(nodeId: string | number, options?: unknown): void; selectNodes(ids: Array): void; destroy?: () => void; } interface VisConstructor { DataSet: new (items?: T[]) => VisDataSet; DataSet(items?: T[]): VisDataSet; Network: new ( container: HTMLElement, data: Record, options: unknown ) => VisNetwork; } const vis: VisConstructor; const marked: { parse( markdown: string, options?: { mangle?: boolean; headerIds?: boolean; sanitize?: boolean; } ): string; }; interface DOMPurifyConfig { [key: string]: unknown; ALLOWED_TAGS?: string[]; ALLOWED_ATTR?: string[]; ADD_TAGS?: string[]; ADD_ATTR?: string[]; } const DOMPurify: { sanitize(dirty: string, options?: DOMPurifyConfig): string; }; const lucide: { createIcons(config?: unknown): void; }; interface Window { switchTab?: (tab: string) => void; chatModule?: { toggleToolCard: (toolId: string) => void; }; graphModule?: { navigateToNode: (nodeId: string) => void; }; memoryModule?: { toggleCard: (index: number) => void; searchWithQuery: (query: string) => Promise; showSaveFormWithText: (text: string) => void; showSaveForm: () => void; }; settingsModule?: { init?: () => Promise; addCronJob?: () => Promise; resetForm?: () => void; saveAndRestart?: () => Promise; toggleAgent: (agentId: string, enabled: boolean) => Promise; onAgentBackendChange: (agentId: string) => void; saveAgentConfig: (agentId: string) => Promise; toggleAllGateway?: (checked: boolean) => void; toggleAllMCP?: (checked: boolean) => void; toggleCronJob?: (id: string, enabled: boolean) => Promise; deleteCronJob?: (id: string) => Promise; }; SpeechRecognition?: SpeechRecognitionConstructor; webkitSpeechRecognition?: SpeechRecognitionConstructor; lucideConfig?: unknown; } }