/* Declarations for lib/srs.js — the module itself ships unchanged. */ export const AGAIN: 0; export const HARD: 1; export const GOOD: 2; export const EASY: 3; export type Grade = 0 | 1 | 2 | 3; export const NEW: 0; export const LEARNING: 1; export const REVIEW: 2; export type CardState = 0 | 1 | 2; /** Days at which a card counts as known. */ export const SECURE_INTERVAL: number; export interface Card { state: CardState; interval: number; ease: number; /** Day number, not a timestamp — see dayNumber(). */ due: number; reps: number; lapses: number; } export function newCard(): Card; export function grade(card: Card, g: Grade, today: number): Card; export function markKnown(today: number): Card; export type CardStatus = "new" | "learning" | "review" | "secure"; export function statusOf(card: Card | null | undefined): CardStatus; /** Label for the interval a grade would produce — shown on the buttons. */ export function preview(card: Card | null | undefined, g: Grade, today: number): string; /** Local day number, DST-safe. */ export function dayNumber(d?: Date): number; /* ── recall evidence, kept separate from the schedule ──────────────── */ export const LEARNED_OK: number; export const LEARNED_STREAK: number; export const LEARNED_SPAN: number; export interface Evidence { ok: number; wrong: number; lookups: number; streak: number; /** Round of the first outcome of any kind. */ firstRound: number; /** Round of the latest outcome of any kind. */ lastRound: number; lastSeen: number; /** Distinct rounds with an outcome. */ rounds: number; } export function newEvidence(): Evidence; /** Pure: returns a new record. A lookup is never a recall and resets the streak. */ export function noteOutcome( ev: Evidence, outcome: "ok" | "wrong", round: number, lookedUp?: boolean, ): Evidence; export function isLearned(ev: Evidence): boolean; /** Whether a tutor's ::confirmed for this word may be stored. */ export function acceptConfirmation(ev: Evidence): boolean;