export interface MultiLanguageText {
    [key: string]: string;
    th: string;
    en: string;
}

export interface JWTPayload {
    id: number;
    username: string;
    email: string;
    roleCode: string;
}

export interface AuthRequest extends Request {
    user?: JWTPayload;
}

export interface PaginationParams {
    page?: number;
    limit?: number;
}

export interface PaginatedResponse<T> {
    data: T[];
    pagination: {
        page: number;
        limit: number;
        total: number;
        totalPages: number;
    };
}

export interface ErrorResponse {
    error: {
        code: string;
        message: string;
        details?: any[];
    };
}

export enum CourseStatus {
    DRAFT = 'DRAFT',
    PENDING = 'PENDING',
    APPROVED = 'APPROVED',
    REJECTED = 'REJECTED'
}

export enum LessonType {
    VIDEO = 'VIDEO',
    TEXT = 'TEXT',
    PDF = 'PDF',
    QUIZ = 'QUIZ'
}

export enum QuizScorePolicy {
    HIGHEST = 'HIGHEST',
    LATEST = 'LATEST',
    AVERAGE = 'AVERAGE'
}
