declare class Card {
    cardId: number;
    n: number;
    EF: number;
    I: number;
    due: Date;
    needsExtraReview: boolean;
    constructor(cardId?: number | null, n?: number, EF?: number, I?: number, due?: Date | null, needsExtraReview?: boolean);
    equals(other: Card): boolean;
    clone(): Card;
    toJSON(): {
        cardId: number;
        n: number;
        EF: number;
        I: number;
        due: string;
        needsExtraReview: boolean;
    };
    static fromJSON(json: {
        cardId: number;
        n: number;
        EF: number;
        I: number;
        due: string;
        needsExtraReview: boolean;
    }): Card;
}

declare class ReviewLog {
    cardId: number;
    rating: number;
    reviewDatetime: Date;
    reviewDuration: number | null;
    constructor(cardId: number, rating: number, reviewDatetime: Date, reviewDuration?: number | null);
    equals(other: ReviewLog): boolean;
    clone(): ReviewLog;
    toJSON(): {
        cardId: number;
        rating: number;
        reviewDatetime: string;
        reviewDuration: number | null;
    };
    static fromJSON(json: {
        cardId: number;
        rating: number;
        reviewDatetime: Date;
        reviewDuration: number | null;
    }): ReviewLog;
}

declare class Scheduler {
    static reviewCard(card: Card, rating: number, reviewDatetime?: Date | null, reviewDuration?: number | null): {
        card: Card;
        reviewLog: ReviewLog;
    };
}

export { Card, ReviewLog, Scheduler };
