/// /// import { Observable } from "../util/observe"; import { FileData, Project } from "../core/Project"; import { ExerciseData } from "./exercises"; export declare type CreateProjectData = { exercise_id?: number; contents: string; is_public?: boolean; name: string; }; export declare type ProjectData = { id: number; exercise_id: number; last_modified: string; contents: string; is_public: boolean; name: string; }; export declare type FullProjectData = ProjectData & { exercise: ExerciseData; write_access: boolean; }; export declare function parseProjectContents(projectData: ProjectData): { name: string; files: FileData[]; }; export declare function stringifyProjectContents(project: Project): string; declare type ProjectListMessages = "projectSelected" | "createProjectClicked"; export declare class ProjectList { observable: Observable; private element; private listElem; readonly projects: readonly ProjectData[]; readonly activeProjectId?: number; constructor(element: JQuery); setProjects(projects: readonly ProjectData[]): void; setActiveProject(projectId: number | undefined): void; createProject(newProject: ProjectData): void; editProject(projectId: number, data: Partial): void; deleteProject(projectId: number): void; } export declare function getMyProjects(): Promise; export declare function getFullProject(project_id: number): Promise; export declare function getCourseProjects(course_id: number): Promise; export declare function getPublicCourseProjects(course_id: number): Promise; export declare function editProject(projectData: Partial & { id: number; }): Promise>; export declare function saveProjectContents(project: Project): Promise | undefined>; export declare function createUserProject(data: CreateProjectData): Promise; export declare function createCourseProject(course_id: number, data: CreateProjectData): Promise; export declare function deleteProject(id: number): Promise>; export {};