///
///
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 {};