import type { Dispatch, SetStateAction } from 'react';
import { useOutletContext } from 'react-router-dom';
import type { AppTab, Project, ProjectSession } from '../../types/app';
import type { SessionLifecycleHandler } from '../main-content/types/types';
export type AppShellContextValue = {
projects: Project[];
selectedProject: Project | null;
selectedSession: ProjectSession | null;
activeTab: AppTab;
isLoading: boolean;
isMobile: boolean;
ws: WebSocket | null;
sendMessage: (message: unknown) => void;
latestMessage: unknown;
externalMessageUpdate: number;
processingSessions: Set<string>;
setActiveTab: Dispatch<SetStateAction<AppTab>>;
onSessionActive: SessionLifecycleHandler;
onSessionInactive: SessionLifecycleHandler;
onSessionProcessing: SessionLifecycleHandler;
onSessionNotProcessing: SessionLifecycleHandler;
onReplaceTemporarySession: SessionLifecycleHandler;
onNavigateToSession: (sessionId: string) => void;
onStartNewSession: (project: Project) => void;
onShowSettings: () => void;
onMenuClick: () => void;
onInputFocusChange: (focused: boolean) => void;
navigateToProject: (projectName: string) => void;
navigateToNewChat: () => void;
};
export function useAppShellContext(): AppShellContextValue {
return useOutletContext<AppShellContextValue>();
}