import { ElectronAPI } from '@electron-toolkit/preload' import type { AnalysisSession, MemberActivity, MemberNameHistory, HourlyActivity, DailyActivity, MessageType, ImportProgress, RepeatAnalysis, CatchphraseAnalysis, } from '../../src/types/chat' interface TimeFilter { startTs?: number endTs?: number } interface ChatApi { selectFile: () => Promise<{ filePath?: string; format?: string; error?: string } | null> import: (filePath: string) => Promise<{ success: boolean; sessionId?: string; error?: string }> getSessions: () => Promise getSession: (sessionId: string) => Promise deleteSession: (sessionId: string) => Promise getAvailableYears: (sessionId: string) => Promise getMemberActivity: (sessionId: string, filter?: TimeFilter) => Promise getMemberNameHistory: (sessionId: string, memberId: number) => Promise getHourlyActivity: (sessionId: string, filter?: TimeFilter) => Promise getDailyActivity: (sessionId: string, filter?: TimeFilter) => Promise getMessageTypeDistribution: ( sessionId: string, filter?: TimeFilter ) => Promise> getTimeRange: (sessionId: string) => Promise<{ start: number; end: number } | null> getDbDirectory: () => Promise getSupportedFormats: () => Promise> onImportProgress: (callback: (progress: ImportProgress) => void) => () => void getRepeatAnalysis: (sessionId: string, filter?: TimeFilter) => Promise getCatchphraseAnalysis: (sessionId: string, filter?: TimeFilter) => Promise } interface Api { send: (channel: string, data?: unknown) => void receive: (channel: string, func: (...args: unknown[]) => void) => void removeListener: (channel: string, func: (...args: unknown[]) => void) => void } declare global { interface Window { electron: ElectronAPI api: Api chatApi: ChatApi } } export { ChatApi, Api }