/* auto-generated by NAPI-RS */ /* eslint-disable */ export declare class BindingItemState { get memory(): BindingMemoryState get interval(): number toString(): string [Symbol.toStringTag](): string } export type ItemState = BindingItemState export declare class BindingMemoryState { constructor(stability: number, difficulty: number) get stability(): number get difficulty(): number toString(): string [Symbol.toStringTag](): string } export type MemoryState = BindingMemoryState export declare class BindingNextStates { get hard(): ItemState get good(): ItemState get easy(): ItemState get again(): ItemState toString(): string [Symbol.toStringTag](): string } export type NextStates = BindingNextStates export declare class FSRSBinding { constructor(parameters?: number[]) nextStates(currentMemoryState: BindingMemoryState | undefined | null, desiredRetention: number, daysElapsed: number): BindingNextStates evaluate(trainSet: Array): ModelEvaluation memoryStateFromSM2(easeFactor: number, interval: number, sm2Retention: number): BindingMemoryState universalMetrics(trainSet: Array, parameter?: Array | undefined | null): [number, number] } export type FSRS = FSRSBinding /** * Stores a list of reviews for a card, in chronological order. Each FSRSItem corresponds * to a single review, but contains the previous reviews of the card as well, after the * first one. * * When used during review, the last item should include the correct `delta_t`, but * the provided rating is ignored as all four ratings are returned by `.nextStates()` */ export declare class FSRSBindingItem { constructor(reviews: Array) get reviews(): Array get current(): FSRSBindingReview | null longTermReviewCnt(): number includeLongTermReviews(): boolean toString(): string [Symbol.toStringTag](): string } export type FSRSItem = FSRSBindingItem export declare class FSRSBindingReview { constructor(rating: number, deltaT: number) /** 1-4 */ get rating(): number /** * The number of days that passed * # Warning * `delta_t` for item first(initial) review must be 0 */ get deltaT(): number toString(): string [Symbol.toStringTag](): string } export type FSRSReview = FSRSBindingReview export declare function computeOptimalSteps(data: Uint8Array, desiredRetention: number, decayOrParams: number | number[]): StepStatsResult /** Calculate appropriate parameters for the provided review history. */ export declare function computeParameters(trainSet: Array, options?: ComputeParametersOptions): Promise export interface ComputeParametersOptions { /** Whether to enable short-term memory parameters */ enableShortTerm: boolean /** Number of relearning steps */ numRelearningSteps?: number /** Training hyperparameters. Omitted fields use fsrs-rs defaults. */ trainingConfig?: TrainingConfig progress?: (current: number, total: number) => boolean | undefined | void timeout?: number } export declare function convertCsvToFsrsItems(data: Uint8Array, nextDayStartsAt: number, timezone: string, offsetProvider: (ms: number, timezone: string) => number): Array /** Evaluate parameters using time-series splits. */ export declare function evaluateWithTimeSeriesSplits(trainSet: Array, options?: ComputeParametersOptions): Promise export interface ModelEvaluation { logLoss: number rmseBins: number } export interface StepRatingStats { /** Number of data points for this rating */ count: number /** Delay quartiles in seconds */ delayQ1: number delayQ2: number delayQ3: number /** Retention rates for each quartile segment */ r1: number r2: number r3: number r4: number /** Overall retention rate */ retention: number /** Fitted stability in seconds */ stability: number } export interface StepStatsResult { again?: StepRatingStats hard?: StepRatingStats good?: StepRatingStats againThenGood?: StepRatingStats goodThenAgain?: StepRatingStats relearning?: StepRatingStats /** Recommended learning steps in seconds (e.g. [60, 600] for "1m 10m") */ recommendedLearningSteps: Array /** Recommended relearning steps in seconds */ recommendedRelearningSteps: Array } export interface TrainingConfig { /** Number of training epochs */ numEpochs: number /** Number of items per training batch */ batchSize: number /** Random seed used for batch shuffling */ seed: number /** Maximum review sequence length retained for training */ maxSeqLen: number /** Optimizer learning rate */ learningRate: number /** L2 regularization strength */ gamma: number }