import { type AssistantSession, type Project, type Work } from '../types';
export interface ProjectState {
    view: 'list' | 'create' | 'conversation';
    selectedProject: Project | null;
    projectContext: {
        name: string;
        id: string;
        message: string;
    } | null;
    projects: Project[];
    projectsLoaded: boolean;
    projectThreads: Record<string, AssistantSession[]>;
    projectWorks: Record<string, Work[]>;
    isEditing: boolean;
    isSaving: boolean;
    isDeleting: boolean;
    isDeleteDialogOpen: boolean;
    name: string;
    description: string;
    form: {
        name: string;
        description: string;
    };
    isCreating: boolean;
    isEditingInstructions: boolean;
    instructions: string;
    isSavingInstructions: boolean;
}
export declare function useProjectState(): {
    state: ProjectState;
    actions: {
        setView: (view: "list" | "create" | "conversation") => void;
        selectProject: (project: Project | null) => void;
        setContext: (context: {
            name: string;
            id: string;
            message: string;
        } | null) => void;
        setProjects: (projects: Project[]) => void;
        setProjectsLoaded: (loaded: boolean) => void;
        setProjectThreads: (projectId: string, threads: AssistantSession[]) => void;
        setProjectWorks: (projectId: string, works: Work[]) => void;
        startEditing: () => void;
        stopEditing: () => void;
        setSaving: (saving: boolean) => void;
        setDeleting: (deleting: boolean) => void;
        setDeleteDialogOpen: (open: boolean) => void;
        setName: (name: string) => void;
        setDescription: (description: string) => void;
        setForm: (form: {
            name: string;
            description: string;
        }) => void;
        setCreating: (creating: boolean) => void;
        startEditingInstructions: () => void;
        stopEditingInstructions: () => void;
        setInstructions: (instructions: string) => void;
        setSavingInstructions: (saving: boolean) => void;
        addProject: (project: Project) => void;
        updateProject: (project: Project) => void;
        removeProject: (id: string) => void;
        reset: () => void;
    };
};
