import { LearnWorldsBaseAction } from '../learnworlds-base.action';
import { ActionParam, ActionResultSimple, RunActionParams } from '@memberjunction/actions-base';
/**
 * Interface for user progress in a course
 */
export interface CourseProgress {
    courseId: string;
    courseTitle: string;
    enrollmentId: string;
    enrolledAt: Date;
    lastAccessedAt?: Date;
    progressPercentage: number;
    completedUnits: number;
    totalUnits: number;
    completedLessons: number;
    totalLessons: number;
    totalTimeSpent: number;
    averageSessionTime: number;
    estimatedTimeToComplete?: number;
    quizScoreAverage?: number;
    assignmentsCompleted?: number;
    assignmentsTotal?: number;
    currentGrade?: number;
    status: 'not_started' | 'in_progress' | 'completed' | 'expired';
    completedAt?: Date;
    expiresAt?: Date;
    certificateEarned: boolean;
    certificateUrl?: string;
    unitProgress?: UnitProgress[];
}
/**
 * Interface for progress within a course unit/module
 */
export interface UnitProgress {
    unitId: string;
    unitTitle: string;
    unitType: 'section' | 'chapter' | 'module';
    order: number;
    progressPercentage: number;
    completedLessons: number;
    totalLessons: number;
    timeSpent: number;
    status: 'not_started' | 'in_progress' | 'completed';
    startedAt?: Date;
    completedAt?: Date;
    lessons?: LessonProgress[];
}
/**
 * Interface for individual lesson progress
 */
export interface LessonProgress {
    lessonId: string;
    lessonTitle: string;
    lessonType: 'video' | 'text' | 'quiz' | 'assignment' | 'scorm' | 'interactive';
    order: number;
    completed: boolean;
    progressPercentage: number;
    timeSpent: number;
    startedAt?: Date;
    completedAt?: Date;
    lastAccessedAt?: Date;
    videoWatchTime?: number;
    videoTotalTime?: number;
    quizScore?: number;
    quizMaxScore?: number;
    quizAttempts?: number;
    assignmentSubmitted?: boolean;
    assignmentGrade?: number;
}
/**
 * Interface for overall user learning progress
 */
export interface UserLearningProgress {
    userId: string;
    userEmail: string;
    totalCourses: number;
    coursesCompleted: number;
    coursesInProgress: number;
    coursesNotStarted: number;
    overallProgressPercentage: number;
    totalTimeSpent: number;
    totalCertificatesEarned: number;
    averageQuizScore?: number;
    courses: CourseProgress[];
    learningStreak?: number;
    lastLearningDate?: Date;
    mostActiveDay?: string;
    preferredLearningTime?: string;
}
/**
 * Action to retrieve detailed progress information for a LearnWorlds user
 */
export declare class GetLearnWorldsUserProgressAction extends LearnWorldsBaseAction {
    /**
     * Description of the action
     */
    get Description(): string;
    /**
     * Main execution method
     */
    protected InternalRunAction(params: RunActionParams): Promise<ActionResultSimple>;
    /**
     * Get progress for a specific course
     */
    private getCourseProgress;
    /**
     * Get progress for all user courses
     */
    private getAllCoursesProgress;
    /**
     * Map course progress data
     */
    private mapCourseProgress;
    /**
     * Map unit progress data
     */
    private mapUnitProgress;
    /**
     * Map lesson progress data
     */
    private mapLessonProgress;
    /**
     * Determine course status from data
     */
    private determineCourseStatus;
    /**
     * Determine unit status
     */
    private determineUnitStatus;
    /**
     * Map lesson type
     */
    private mapLessonType;
    /**
     * Calculate estimated time to complete
     */
    private calculateEstimatedTimeToComplete;
    /**
     * Calculate learning analytics
     */
    private calculateLearningAnalytics;
    /**
     * Create progress summary
     */
    private createProgressSummary;
    /**
     * Define the parameters for this action
     */
    get Params(): ActionParam[];
}
//# sourceMappingURL=get-user-progress.action.d.ts.map