export interface Course { id: string; title: string; description?: string; lessonIds: string[]; bannerAssetId?: string; logoAssetId?: string; courseLabel?: string; lessonLabel?: string; accentColor?: string; defaultFont?: string; defaultLanguage?: string; numberLessons?: boolean; showLessonTitles?: boolean; createdAt: string; updatedAt: string; } export interface CourseCreate { title: string; description?: string; bannerAssetId?: string; logoAssetId?: string; courseLabel?: string; lessonLabel?: string; accentColor?: string; defaultFont?: string; defaultLanguage?: string; numberLessons?: boolean; showLessonTitles?: boolean; } export interface LanguageVersion { languageCode: string; title?: string; description?: string; courseLabel?: string; lessonLabel?: string; lessonCount: number; } export interface LessonSummary { id: string; title?: string; languageCode?: string; blockIds: string[]; blocks?: Array<{ id: string; lessonId: string; type?: string; }>; } /** * List all courses in the Surna eLearning platform. * * @returns Array of course objects with basic information * @example * const courses = await listCourses(); * console.log(`Found ${courses.length} courses`); * * // To get lesson count for each course: * courses.forEach(c => console.log(`${c.title}: ${c.lessonIds.length} lessons`)); */ export declare function listCourses(): Promise; /** * Get detailed information about a specific course. * * @param courseId - Unique identifier for the course * @returns Complete course object with lessons * @example * const course = await getCourse('course_abc123'); * console.log(`${course.title} has ${course.lessonIds.length} lessons`); */ export declare function getCourse(courseId: string): Promise; /** * Get a course and optionally include lessons (and optionally filter by language). * * @param courseId - Course ID * @param options - { includeLessons?: boolean; languageCode?: string } */ export declare function getCourseWithLessons(courseId: string, options?: { includeLessons?: boolean; languageCode?: string; }): Promise; /** * Create a new course. * * @param data - Course creation parameters * @returns Newly created course object * @example * const newCourse = await createCourse({ * title: 'Workplace Safety 101', * description: 'Essential safety training', * defaultLanguage: 'en' * }); */ export declare function createCourse(data: CourseCreate): Promise; /** * Update an existing course. * * @param courseId - Course to update * @param data - Fields to update * @returns Updated course object * @example * await updateCourse('course_123', { * description: 'Updated description', * accentColor: '#6366f1' * }); */ export declare function updateCourse(courseId: string, data: Partial): Promise; /** * Delete a course and all its lessons. * * @param courseId - Course to delete * @returns Success confirmation * @example * await deleteCourse('course_123'); */ export declare function deleteCourse(courseId: string): Promise<{ success: boolean; }>; /** * Duplicate an existing course with all lessons and blocks. * * @param courseId - Source course to duplicate * @returns Newly created course copy * @example * const duplicate = await duplicateCourse('course_123'); * await updateCourse(duplicate.id, { title: 'Safety Training (Copy)' }); */ export declare function duplicateCourse(courseId: string): Promise; /** * Export a course to JSON format. * * @param courseId - Course to export * @returns JSON export data * @example * const exportData = await exportCourse('course_123'); * // Save to file or send to another system */ export declare function exportCourse(courseId: string): Promise; /** * Import a course from JSON data. * * @param courseData - Course JSON export * @returns Imported course object * @example * const exportData = await exportCourse('course_123'); * const importedCourse = await importCourse(exportData); */ export declare function importCourse(courseData: any): Promise; /** * List all language versions available for a course. * * @param courseId - Course ID * @returns Array of language versions with metadata * @example * const versions = await listLanguageVersions('course_123'); * versions.forEach(v => console.log(`${v.languageCode}: ${v.lessonCount} lessons`)); */ export declare function listLanguageVersions(courseId: string): Promise; /** * Create a new language version of a course. * Duplicates all lessons and blocks from the default language. * * IMPORTANT: You should provide translated title and description in the SAME call. * This ensures the language version has proper metadata immediately. * * @param courseId - Course ID (or config object with all options) * @param languageCode - ISO 639-1 language code (e.g., "fr", "es", "de") * @param metadata - Optional metadata (title, description, labels) * @returns Created language version with lessons * * @example * // ✅ CORRECT: Provide title and description immediately * await createLanguageVersion('course_123', 'fr', { * title: 'Formation à la sécurité', * description: 'Formation essentielle à la sécurité' * }); * * @example * // ✅ ALSO CORRECT: Use object syntax * await createLanguageVersion({ * courseId: 'course_123', * languageCode: 'fr', * title: 'Formation à la sécurité', * description: 'Formation essentielle' * }); * * @example * // ❌ AVOID: Creating without title/description requires second call * await createLanguageVersion('course_123', 'fr'); * // Now you have to make a second call: * await updateLanguageVersionMetadata('course_123', 'fr', { * title: 'Formation à la sécurité' * }); */ export declare function createLanguageVersion(courseId: string | { courseId: string; languageCode: string; translateFrom?: string; title?: string; description?: string; courseLabel?: string; lessonLabel?: string; }, languageOrConfig?: string | { languageCode: string; translateFrom?: string; title?: string; description?: string; courseLabel?: string; lessonLabel?: string; }, metadata?: { title?: string; description?: string; courseLabel?: string; lessonLabel?: string; }): Promise; /** * Update the title and description for a language version. * * @param courseId - Course ID * @param languageCode - Language code * @param metadata - Title, description, or label translations * @returns Updated language version * @example * await updateLanguageVersionMetadata('course_123', 'es', { * title: 'Capacitación en seguridad', * courseLabel: 'Módulo', * lessonLabel: 'Lección' * }); */ export declare function updateLanguageVersionMetadata(courseId: string, languageCode: string, metadata: { title?: string; description?: string; courseLabel?: string; lessonLabel?: string; }): Promise; /** * Delete a language version and all its content. * Cannot delete the default language version. * * @param courseId - Course ID * @param languageCode - Language code to delete * @example * await deleteLanguageVersion('course_123', 'de'); */ export declare function deleteLanguageVersion(courseId: string, languageCode: string): Promise; //# sourceMappingURL=courses.d.ts.map